import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^..(.[!G)(3w^]|.{7}$|$)|\\$\\?";
final String string = "The next answer has to match the following strings:\n\n"
+ "PPCG\n"
+ "^P\n"
+ "^[P^]P\n"
+ "[^?][PG]$\n"
+ "(?<!\\\\..)(?!]).$\n"
+ "^[\\w^]*$|!|]P|G]\\$$\n"
+ "!|[^?]P(CG|G..)?$\n"
+ "[^])]\\$|^\\^?P|P.\\].$\n"
+ "([.$?]|G\\])\\$$|^\\^?P|\\]P$\n"
+ "([P.$?]\\$|[]^]P|G\\]\\$|CG)$\n"
+ "!|((G.|P|\\.)\\$|[^?]P|CG)$\n"
+ "^[(!P]|G..$|]..\\||[^?]P$\n"
+ "^.{3,23}[.-~]..\\$$|[^P?][PG]$\n\n"
+ "And fail on these strings:\n\n"
+ "[PPCG]\n"
+ "^[P\\^]\n"
+ "[^\\]]$\n"
+ "^\\^?P\n"
+ "[^?][PG]$|<|PG\n"
+ "^[^\\\\|]*(\\\\\\\\)+[^\\\\|]*[^\\]]$\n"
+ "^(.{,4}|.{9}|.{16,19}|.{5}P)$\n"
+ "^[^?]*[PG]$|[?$].*\\$$\n"
+ "^[^[]P|]P|(G]|[.])\\$$\n"
+ "\\..$|!|\\|G|^[\\^P]P|P\\^|G.\\$$\n"
+ "...\\^.P|^!|G]\\$$|w|<!|^\\^?P\n"
+ "([^\\\\}<]{3}|][^]]|^).?[$PG]$\n"
+ "^(..[^^].{4,22}\\$|[^?]+\\w)$|2\n"
+ "^(..[^^].{4,22}\\$|[^?]+\\w)$|~";
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