import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(?(DEFINE)\n"
+ " (?<recurs>\n"
+ " (?! \\{@|@\\} ) [^|] [^\\{@|\\\\]* ( \\\\.[^\\{@|\\\\]* )* | (?R)\n"
+ " )\n"
+ ")\n"
+ "\\{@\n"
+ "(?<If>\\w+)-\n"
+ "(?<Condition>(%?\\w++ (:\\w+)*)* )\n"
+ "(?<True> [|] [^\\{@|]*+ (?&recurs)* )\n"
+ "(?<False> [|] (?&recurs)* )?\n"
+ "\\s*@\\}";
final String string = "{@if-statement:sub%statement2|\n"
+ "<header id=\"header_home\">\n"
+ " <div class=\"in\">\n"
+ " <div class=\"top\">\n"
+ " <h1 class=\"logo\"><a href=\"/\"><img src=\"/img/logo-home.png\" alt=\"\"></a></h1>\n"
+ " <div class=\"login_outer_wrapper\">\n"
+ " <button id=\"login\"><div class=\"a\"><i class=\"stripe\"><i></i></i>Log in</div></button>\n"
+ " <div id=\"login_wrapper\">\n"
+ " <form method=\"post\" action=\"{^login^}\" id=\"form_login_global\">\n"
+ " <div class=\"form_field no_description\">\n"
+ " <label>{!auth:login_email!}</label>\n"
+ " <div class=\"input\"><input type=\"text\" name=\"form[login]\"></div>\n"
+ " </div>\n"
+ " <div class=\"form_field no_description password\">\n"
+ " <label>{!auth:password!}</label>\n"
+ " <div class=\"input\"><input type=\"password\" name=\"form[password]\"></div>\n"
+ " </div>\n"
+ " <div class=\"remember\">\n"
+ " <input type=\"checkbox\" name=\"remember\" id=\"remember_me_check\" checked>\n"
+ " <label for=\"remember_me_check\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i>Remember</label>\n"
+ " </div>\n"
+ " <div class=\"submit_box\">\n"
+ " <button class=\"btn btn_check\">Log in</button>\n"
+ " </div>\n"
+ " </form>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " <div class=\"content clr\">\n"
+ " <div class=\"main_menu\">\n"
+ " <a href=\"\">\n"
+ " <i class=\"ico a\"><i class=\"fa fa-lightbulb-o\" aria-hidden=\"true\"></i></i>\n"
+ " <span>Idea</span>\n"
+ " <div> </div>\n"
+ " </a>\n"
+ " <a href=\"\">\n"
+ " <i class=\"ico b\"><i class=\"fa fa-user\" aria-hidden=\"true\"></i></i>\n"
+ " <span>FFa</span>\n"
+ " </a>\n"
+ " <a href=\"\">\n"
+ " <i class=\"ico c\"><i class=\"fa fa-briefcase\" aria-hidden=\"true\"></i></i>\n"
+ " <span>Buss</span>\n"
+ " </a>\n"
+ " </div>\n"
+ " <div class=\"text_wrapper\">\n\n"
+ " <div>\n"
+ " <div class=\"register_wrapper\">\n"
+ " <a id=\"main_register\" class=\"btn register\">Załóż konto</a>\n"
+ " <form method=\"post\" action=\"{^login^}\" id=\"form_register_home\">\n"
+ " <div class=\"form_field no_description\">\n"
+ " <label>{!auth:email!}</label>\n"
+ " <div class=\"input\"><input type=\"text\" name=\"form2[email]\"></div>\n"
+ " </div>\n"
+ " <div class=\"form_field no_description password\">\n"
+ " <label>{!auth:password!}</label>\n"
+ " <div class=\"input tooltip\"><input type=\"password\" name=\"form2[password]\"><i class=\"fa fa-info-circle tooltip_open\" aria-hidden=\"true\" title=\"{!auth:password_format!}\"></i></div>\n\n"
+ " </div>\n"
+ " <div class=\"form_field terms no_description\">\n"
+ " <div class=\"input\">\n"
+ " <input type=\"checkbox\" name=\"form2[terms]\" id=\"terms_check\">\n"
+ " <label for=\"terms_check\"><i class=\"fa fa-check\" aria-hidden=\"true\"></i>Agree</label>\n"
+ " </div>\n"
+ " </div>\n"
+ " <div class=\"form_field no_description\">\n"
+ " <div cl\\|\\|ass=\"input captcha_wrapper\">\n"
+ " <div class=\"g-recaptcha\" data-sitekey=\"{%captcha_public_key%}\"></div>\n"
+ " </div>\n"
+ " </div>\n"
+ " <div class=\"submit_box\">\n"
+ " <button class=\"btn btn_check\">{!auth:register_btn!}</button>\n"
+ " </div>\n"
+ " </form>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ "</header>|{@if-statement2|echo this|{@if-statement2|echo this|echo othe\\|\\|rwise@}@}\n"
+ "@}";
final Pattern pattern = Pattern.compile(regex, Pattern.COMMENTS);
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