import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^s?([\\/|@#])(?:(?!\\1).)+\\1(?:(?!\\1).)*\\1(?:i|(?:gi?|ig)(\\1\\d{1,2})?)?$\n";
final String string = "should match:\n"
+ "/.//\n"
+ "|.||\n"
+ "s/.//\n"
+ "/.//g\n"
+ "/.//i\n"
+ "/././gi\n"
+ "/one-or-more/anything/\n"
+ "/one-or-more/anything/g/3\n"
+ "/one-or-more/anything/i\n"
+ "/one-or-more/anything/gi/99\n"
+ "s/one-or-more/anything/g/4\n"
+ "s/one-or-more/anything/i\n"
+ "s/one-or-more/anything/gi/54\n"
+ "s|.||\n"
+ "|.||g\n"
+ "|.||i\n"
+ "|.|.|gi\n"
+ "|one-or-more|anything|\n"
+ "|one-or-more|anything|g|3\n"
+ "|one-or-more|anything|i\n"
+ "|one-or-more|anything|gi|99\n"
+ "s|one-or-more|anything|g|4\n"
+ "s|one-or-more|anything|i\n"
+ "s|one-or-more|anything|gi|54\n\n"
+ "should not match:\n"
+ "s/one-or-more/anything/33\n"
+ "s|one-or-more|anything|33\n"
+ "/./\n"
+ "|.|\n"
+ "s|one-or-more|anything|gi|3333\n"
+ "s/one-or-more/anything/gi/3333\n"
+ "/.///\n"
+ "s/.///\n"
+ "s/././/\n"
+ "/anything/anything/anything/anything/\n"
+ "s/anything/anything/anything/\n"
+ "s/anything/anything/anything/g\n"
+ "s/anything/anything/anything/i\n"
+ "s/anything/anything/anything/gi\n"
+ "/anything/anything/anything/gi\n"
+ "/anything/anything/anything/g\n"
+ "/anything/anything/anything/i\n"
+ "|.|||\n"
+ "s|.|||\n"
+ "s|.|.||\n"
+ "|anything|anything|anything|anything|\n"
+ "s|anything|anything|anything|\n"
+ "s|anything|anything|anything|g\n"
+ "s|anything|anything|anything|i\n"
+ "s|anything|anything|anything|gi\n"
+ "|anything|anything|anything|gi\n"
+ "|anything|anything|anything|g\n"
+ "|anything|anything|anything|i";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE);
final Matcher matcher = pattern.matcher(string);
while (matcher.find()) {
System.out.println("Full match: " + matcher.group(0));
for (int i = 1; i <= matcher.groupCount(); i++) {
System.out.println("Group " + i + ": " + matcher.group(i));
}
}
}
}
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