import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "if\\s*\\((?P<conditional>(?:(?:(?:\"(?:(?:\\\\\")|[^\"])*\")|(?:'(?:(?:\\\\')|[^'])*'))|[^\\(\\)]|\\((?1)\\))*+)\\)\\s*(?P<true_body>(?:\\{(?:(?:(?:\"(?:(?:\\\\\")|[^\"])*\")|(?:'(?:(?:\\\\')|[^'])*'))|[^\\{\\}]|\\{(?2)\\})*+\\})|(?:[^\\{\\}\\n]*))\\s*(?:(?:else\\s+?(?!if)(?P<else_body>(?:\\{(?:(?:(?:(?:\"(?:(?:\\\\\")|[^\"])*\")|(?:'(?:(?:\\\\')|[^'])*'))|[^\\{\\}]|\\{(?3)\\})+)\\})|(?:[^\\{\\}\\n])*)\\s*)|(?:else\\s*if\\s*\\((?P<else_if_condition>(?:(?:(?:\"(?:(?:\\\\\")|[^\"])*\")|(?:'(?:(?:\\\\')|[^'])*'))|[^\\(\\)]|\\((?4)\\))+)\\)\\s*(?P<else_if_body>(?:(?:\\{(?:(?:(?:\"(?:(?:\\\\\")|[^\"])*\")|(?:'(?:(?:\\\\')|[^'])*'))|[^\\{\\}]|\\{(?5)\\})+\\})|(?:[^\\{\\}\\n]*)))\\s*))*";
final String string = "// in_out.cpp: определяет точку входа для консольного приложения.\n"
+ " \n"
+ "#include \"stdafx.h\"\n"
+ "#include <iostream>\n"
+ "using namespace std;\n"
+ " \n"
+ "int main()\n"
+ "{\n"
+ " int a, \n\n\n"
+ "b; // объявление переменных типа int, то есть в таких переменных хранятся только целые числа\n"
+ " cout << \"Vvedite \n\n"
+ "pervoe \n\n"
+ "chislo: \";\n"
+ " cin >> a;\n"
+ " cout << \"Vvedite vtoroe chislo: \";\n"
+ " cin >> b;\n"
+ " if (a > b) \n"
+ " cout << a << \" > \" << b << endl; // печатать данное сообщение\n"
+ " \n"
+ " if (a <\n"
+ "b and c ==k\n"
+ " or (s == f && f==d))\n"
+ " {\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " if (sdfsdf) {\n"
+ "sdfsdf\n"
+ " }\n\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " cout << a << \" < \" << b << endl;\n\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " }\n"
+ " if (a == b) // если а = b\n"
+ " cout << a << \" = \" << b << endl; // в теле условного оператора опущены фигурные скобочки\n"
+ " system(\"pause\");\n"
+ " return 0;\n"
+ "}\n\n\n"
+ " if (a <b) {\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " }\n\n\n"
+ " if (a <b\n"
+ "cvxcv sdfsd sdfsd \n"
+ "sdfds \n\n"
+ ") {\n"
+ " cout << a << \" < \" << b << endl;\n"
+ " } else {\n"
+ "dsfsdfsdf\n"
+ "}\n\n"
+ "if (var1 == \"(\"){\n"
+ " echo \"{в\";\n"
+ "}\n\n\n"
+ "if(boolean_expression 1)\n"
+ "{\n"
+ " // Executes when the boolean expression 1 is true\n"
+ "}\n"
+ "else if(boolean_expression 2)\n"
+ "{\n"
+ " // Executes when the boolean expression 2 is true\n"
+ "}\n"
+ "else if( boolean_expression 3)\n"
+ "{\n"
+ " // Executes when the boolean expression 3 is true\n"
+ "}\n"
+ "else \n"
+ "{\n"
+ " // executes when the none of the above condition is true.\n"
+ "}\n\n";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.CASE_INSENSITIVE);
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