import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^(([=*_])\\2{23,}(?:\\R\\2+)*$)(.*?)^\\1$";
final String string = " This is some text that should not be matched. As you can see, it is not enclosed\n"
+ "by separator lines.\n\n"
+ "===========================================================\n"
+ "This part should be matched as it is between two separator lines. Note that the\n"
+ "opening and closing separators are composed of the exact same number of the same\n"
+ "character.\n"
+ "===========================================================\n"
+ "This block should not be matched as it is not enclosed by its own separators,\n"
+ "but rather the closing separator of the previous block and the opening \n"
+ "separator of the next block.\n"
+ "===========================================================\n"
+ "It is tricky to distinguish between an enclosed and non-enclosed blocks, because\n"
+ "sometimes a matching pair of separators appears to be legal, while it is really\n"
+ "the closing separator of the previous block and the opening separator of the\n"
+ "next one (e.g. the block obove this one).\n"
+ "===========================================================\n"
+ "==================================\n"
+ "=====\n"
+ "This block is enclosed by multiline separators.\n"
+ "==================================\n"
+ "=====\n"
+ "Some more text that should not be matched by the regex.\n"
+ "***************************************";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
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