import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?<=[:=!?&,;|\\{\\[\\(\\n])[\\x09\\x20]*(?:\\/(?![*+?])(?:(?:[^\\n\\[\\\\\\/]*+(?:\\\\\\\\)*+(?:\\\\\\[|\\\\\\/|\\\\(?!\\[))?(\\[)?)+(?(1)([^\\n\\]\\\\]*+(\\\\\\\\)*+(\\\\\\]|\\\\(?!\\]))?)*((?<!\\\\)\\])?))*[^\\n]*?(?<![^\\\\]\\/)(?<![^\\\\]\\\\)\\/)[gim]{0,3}[\\x09\\x20]*+(?![^\\}\\]\\),;:.\\n])";
final String string = "// Regular expressions \n"
+ " r = /([\\\\/])?([^\\\\/]*)$/; \n"
+ " r = /([\\\\/])?([^\\\\:/]*)$/; // коммент \n"
+ " /abc\\[def\\[^\\s[\\]/]ghi/g.test(s);// здеÑÑŒ одна пара квадратных Ñкобок! \n"
+ "r = /\\//i; \n"
+ " r = /[/\\*]/img; // коммент \n"
+ " r = /[a-z]{5}/; \n"
+ " r = /[a-z]{1,5}/; \n"
+ " r = /([a-z])+/; \n"
+ " r = /([a-z]{1,5})+/; \n"
+ "r = /f([a-z])/; \n"
+ "r = /f([a-z]+)*/; \n"
+ "r = /a(b)c(d)/; \n"
+ "r = /a(b)?c(d)+?/; \n"
+ "r =(t|/\\*/.test(s)); \n"
+ " r =(t|/\\*/); // коммент \n"
+ "r =/./.test(s) && f(); \n"
+ "r=/[a-z]/.test(s) && f(); \n"
+ "var a = [/a\\/, \\/b/]; \n"
+ " a=[/a/,/b/]; \n"
+ "var o = { r: /./, x: 2 }; // коммент \n"
+ " o={r:/./,x:2}; \n"
+ "var x = a && /b/.test(s); \n"
+ " x = a ? /b/ : /c/;// коммент \n"
+ " x=a?/b/:/c/; \n"
+ " x=a?/b\\\\/:/c\\/\\\\/; // коммент \n"
+ " x=a?/b\\\\/:/c\\/\\\\/; // коммент \n"
+ " x = !/a/.test(s); \n"
+ " x = f(/./i); \n"
+ " x=1*s.replace(/^[^\\d]*(\\d+).*$/,'$1')/2; \n"
+ " /\\s\\n\\s+\\/\\/\\\\\\\\/.test(s)?f(null):f(/\\\\/); \n"
+ " /\\s\\n\\s+\\/\\/\\\\\\\\/.test(s)?f(null):f(/\\\\fghj[\\[fghj\\]]kl/), /fght/; \n"
+ " a=s.search(/\\s\\n\\s+\\/f\\//gi); \n"
+ " r=/>\\.jjj\\n<\\s\\</ \n"
+ " .exec(s); \n"
+ " r=/ \\n \\s/g, \n"
+ " t=/'/g \n"
+ " ; \n"
+ " \n"
+ "// Not a regular expressions \n"
+ "var n = 1/2;// коммент \n"
+ " n = 1/2/3; \n"
+ " n = 1/2/p; \n"
+ " n = 1/(2/p); // коммент \n"
+ " n = 1/this.n/3; \n"
+ " n = 1/this.f(5+4)/3; \n"
+ " n = 1/this.f(2/3); \n"
+ " n = 1/2 + (function() { return 3/4; })(); \n"
+ " n = 1/2*(this.x/3 + 2); \n"
+ " n = 1/2*(this.x + 2/3); \n"
+ " n =p/2,t=3/p; \n"
+ " n = f(1/2) + f(3/2);";
final Pattern pattern = Pattern.compile(regex);
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