import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?:^(?:[(]?\\b(?:_xTagsx_)\\b(?:and|[ ,.&+/-])*)+[:. \\)-]*|(?:[:. \\(-]|in|with|using)*(?:\\b(?:_xTagsx_)\\b(?:and|[ ,&+/)-])*)+([?.! ]*)$)";
final String string = "Note use of _xTagsx_ placeholder; this is replaced in code.\n"
+ "Be careful: any escaped characters will require double-escape in string to form regexp.\n"
+ "** Flags should be gi in production; 'm' for test here only.\n\n"
+ "Remove leading tags from:\n\n"
+ "_xTagsx_ & _xTagsx_: Rest of title\n\n"
+ "_xTagsx_ - _xTagsx_ - _xTagsx_ - Rest of title\n\n"
+ "_xTagsx_ Rest of title\n\n"
+ "_xTagsx_, _xTagsx_ & _xTagsx_ Rest of title\n\n"
+ "_xTagsx_. Checking if string contains text from an array of substrings.\n\n"
+ "_xTagsx_ and _xTagsx_:\n\n"
+ "_xTagsx_ - Rest of title\n\n"
+ "_xTagsx_/_xTagsx_ - Rest of title\n\n"
+ "(_xTagsx_) Rest of title\n\n\n"
+ "Remove Trailing tags (but leave final punctuation, if any) from:\n\n"
+ "How to use <= in _xTagsx_ _xTagsx_?\n\n"
+ "Rest of title (_xTagsx_)\n\n"
+ "Rest of title (_xTagsx_/_xTagsx_ - _xTagsx_)\n\n"
+ "Rest of title - in _xTagsx_.\n\n\n"
+ "Leave alone:\n\n"
+ "Use of _xTagsx_ in general.\n\n"
+ "_xTagsx_as part of a word_xTagsx_";
final String subst = "$1";
final Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE | Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
// The substituted value will be contained in the result variable
final String result = matcher.replaceAll(subst);
System.out.println("Substitution result: " + result);
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html