import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?(DEFINE)\n"
+ " (?P<realEnd>\n"
+ " (?(3)\\>)\n"
+ " (?(4)\\))\n"
+ " (?(5)\\])\n"
+ " (?(6)\\})\n"
+ " (?(7)\\7)\n"
+ " )\n"
+ ")\n"
+ "#Ограничитель 1\n"
+ "((\\<)|(\\()|(\\[)|(\\{)|\n"
+ "((?=[[:ascii:]])[^\\s\\w\\\\\\)\\]\\}\\>]))\n"
+ "#Шаблон\n"
+ "(\n"
+ " (?:\n"
+ " \\\\. | # что-то экранированое ИЛИ\n"
+ " [\\w\\d\\s]++ | # литералы, которые не могут быть ограничителем ИЛИ\n"
+ " (?!(?P>realEnd)). # что угодно кроме ограничителя\n"
+ " )*+\n"
+ ")\n"
+ "#Ограничитель 2\n"
+ "(?P>realEnd)\n"
+ "#Модификаторы шаблонов\n"
+ "#PHP [mixXsuUAJ] JavaScript [gmi] python [gmixsu]\n"
+ "((?:[mixXsuUAJ]*)|(?(?=.*?[mixXsuUAJ]+)[mixXsuUAJ]+))";
final String string = "test $ffsd\\$ggg\\\\\\\\\\\\\\\\$iU";
final Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS | Pattern.DOTALL | Pattern.UNICODE_CASE);
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