import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\{generic_page_slideshow((?::\\S+?)?)(\\s.*?)?\\}(.*?)\\{\\/generic_page_slideshow\\1\\}";
final String string = "\n"
+ " {!-- ra:0000000019ecdbb0000000005dbc5212 --}\n\n"
+ " {layout:set name=\"title\"}{title}{/layout:set}\n"
+ " {layout:set name=\"entry_id\"}{entry_id}{/layout:set}\n"
+ " {layout:set name=\"body_class\"}{generic_page_theme}{/layout:set}\n\n\n\n\n"
+ " {!-- ra:0000000019ecdbf4000000005dbc5212 --}{if {generic_page_slideshow:total_rows} > 0}\n"
+ " <div class=\"row\">\n"
+ " <div class=\"carousel overlay-nav\">\n"
+ " <div data-navigation=\"nav-carousel1\" data-crsl=\"[{"visible": 1, "itemMinWidth": 300, "itemMargin": 0}]\" class=\"crsl-items\">\n"
+ " <div class=\"crsl-wrap\">\n"
+ " {generic_page_slideshow}\n"
+ " <figure class=\"crsl-item\">\n"
+ " <img src=\"{generic_page_slideshow:image}\">\n"
+ " <figcaption class=\"crsl-caption\">\n"
+ " <p class=\"close\">{generic_page_slideshow:caption}</p>\n"
+ " </figcaption>\n"
+ " </figure>\n"
+ " {/generic_page_slideshow}\n"
+ " </div>\n"
+ " </div>\n"
+ " <div id=\"nav-carousel1\" class=\"crsl-nav\">\n"
+ " <div class=\"crsl-nav-helper\"><a href=\"#\" class=\"previous\"><i class=\"icon-carat-l eft\"></i><span> Previous</span></a><a href=\"#\" class=\"next\"><span>Next </span><i class=\"icon-carat\"></i></a></div>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n\n"
+ " <hr class=\"block-spacer\">\n"
+ " {/if}\n\n"
+ " <!-- Page Overview with optional Sidebar -->\n"
+ " {generic_page_overview_1}\n"
+ " <header id=\"page-header\" class=\"row research-header-heightmatch columned\">\n"
+ " <div class=\"columns {!-- ra:0000000019ecdb18000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0}large-8{if:else}large-12{/if} default-padding\">\n"
+ " <h2>{generic_page_overview_1:text}</h2>\n"
+ " {!-- ra:0000000019ecdb26000000005dbc5212 --}{if generic_page_overview_1:link_text != ''}\n"
+ " <h3 class=\"white-icons\"><a href=\"{generic_page_overview_1:link_url}\" class=\"button\">{generic_page_overview_1:link_text} <i class=\"icon-carat\"></i></a></h3>\n"
+ " {/if}\n"
+ " </div>\n\n"
+ " {!-- ra:0000000019ecdb32000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0}\n"
+ " <div class=\"columns large-4 triangle-tiles research-header-heightmatch\">\n"
+ " <h 3 class=\"bold\">{generic_page_overview_1:side_bar_text}</h3>\n"
+ " <ul class=\"close white-links white-icons text-lightweight loose-list-less\">\n"
+ " {/if}\n"
+ " {/generic_page_overview_1}\n\n\n"
+ " {!-- ra:0000000019ecdb5e000000005dbc5212 --}{if {generic_page_overview_1:total_rows} > 0}\n"
+ " {!-- ra:0000000019ecdb52000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0}\n"
+ " {generic_page_overview_1_links}\n"
+ " <li><a href=\"{generic_page_overview_1_links:link_url}\"><i class=\"{generic_page_overview_1 _links:icon} scaleup\"></i> {generic_page_overview_1_links:link_text}</a></li>\n"
+ " {/generic_page_overview_1_links}\n"
+ " </ul>\n"
+ " </div>\n"
+ " {/if}\n"
+ " </header>\n"
+ " <hr class=\"block-spacer\">\n"
+ " {/if}\n\n"
+ " <!-- Grey triangle box with optional picture. -->\n"
+ " {generic_page_overview_2}\n"
+ " <div class=\"row\">\n"
+ " <div class=\"triangle-tiles\">\n"
+ " <div class=\"row\">\n"
+ " <div class=\"columns {!-- ra:0000000019ecdb72000000005dbc5212 --}{if generic_page_overview_2:image != '' OR generic_page_overview_2:media_url != ''}larg e-6{if:else}large-12{/if}\">\n"
+ " {!-- ra:0000000019ecda96000000005dbc5212 --}{if generic_page_overview_2:title_url != ''}\n"
+ " <h2><a href=\"{generic_page_overview_2:title_url}\">{generic_page_overview_2:title}</a></h2>\n"
+ " {if:else}\n"
+ " <h2>{generic_page_overview_2:title}</h2>\n"
+ " {/if}\n"
+ " <h3>{generic_page_overview_2:text}</h3>\n"
+ " <ul class=\"link-on-dark-icons\">\n"
+ " {/generic_page_overview_2}\n\n\n"
+ " {!-- ra:0000000019ecdab4000000005dbc5212 --}{if {generic_page_overview_2:total_rows} > 0}\n"
+ " {!-- ra:0000000019ecdac8000000005dbc5212 --}{if {generic_page_overview_2_links:total_rows} > 0}\n"
+ " {generic_page_overview_2_links}\n"
+ " <li><a href=\"{generic_page_overview_2_links:link_url}\">{generic_page_overview_2_links:link_text} <i class=\"icon-carat\"></i></a></li>\n"
+ " {/generic_page_overview_2_links}\n"
+ " {/if}\n"
+ " </ul>\n"
+ " </div>\n"
+ " {generic_page_overview_2}\n"
+ " {!-- ra:0000000019ecdad2000000005dbc5212 --}{if generic_page_overview_2:image != ''}\n"
+ " <div class=\"columns large-6 \"><img src=\"{generic_page_overview_2:image}\"></div>\n"
+ " {!-- ra:0000000019ecdae0000000005dbc5212 --}{if:elseif generic_page_overview_2:media_url != ''}\n"
+ " <div class=\"columns large-6\">\n\n"
+ " </div>\n"
+ " {/if}\n"
+ " {/generic_page_overview_2}\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " <!--hr class=\"block-spacer\"-->\n"
+ " {/if}\n\n"
+ " <!-- stick navigation-->\n"
+ " {!-- ra:0000000019ecda3c000000005dbc5212 --}{if {generic_page_body:total_rows} > 1}\n"
+ " <div class=\"sticky-wrapper sticky-horizontal\">\n"
+ " <div class=\"row\">\n"
+ " {exp:vbi_utils:get_calcu_pair num_items='{generic_page_body:total_rows}'}\n"
+ " {!-- ra:0000000019ecda32000000005dbc5212 --}{if {row1_space_col} > 0}\n"
+ " <div class=\"columns large-{row1_space_col} medium-{row1_space_col} small-12\"> </div>\n"
+ " {/if}\n"
+ " {generic_page_body}\n"
+ " {!-- ra:0000000019ecda5e000000005dbc5212 --}{if {generic_page_body:field_row_count} <= {limit_number}}\n"
+ " <div class=\"columns large-{row_col_1} medium-{row_col_1} small-12 {!-- ra:0000000019ecda6c000000005dbc5212 --}{if {generic_page_body:count} == {limit_number}}end{/if}\"><a href=\"#{exp:vbi_utils:url_friendly value='{generic_page_body:menu_title}'}\" class=\"smoothScroll\"><i class=\"{generic_page_body:icon}\"></i>{generic_page_body:menu_title}</a></div>\n"
+ " {/if}\n"
+ " {/generic_page_body}\n"
+ " {!-- ra:0000000019ecda70000000005dbc5212 --}{i f {row1_space_col} > 0}\n"
+ " <div class=\"columns large-{row1_space_col} medium-{row1_space_col} small-12\"> </div>\n"
+ " {/if}\n"
+ " </div>\n"
+ " <div class=\"row\">\n"
+ " {!-- ra:0000000019ecd982000000005dbc5212 --}{if {row2_space_col} > 0}\n"
+ " <div class=\"columns large-{row2_space_col} medium-{row2_space_col} small-12\"> </div>\n"
+ " {/if}\n"
+ " {generic_page_body}\n"
+ " {!-- ra:000000 0019ecd9ae000000005dbc5212 --}{if {generic_page_body:field_row_count} > {limit_number}}\n"
+ " <div class=\"columns large-{row_col_2} medium-{row_col_2} small-12 {!-- ra:0000000019ecd9bc000000005dbc5212 --}{if {generic_page_body:count} == {generic_page_body:total_rows}}end{/if}\"><a href=\"#{exp:vbi_utils:url_friendly value='{generic_page_body:menu_title}'}\" class=\"smoothScroll\"><i class=\"{generic_page_body:icon}\"></i>{generic_page_body:menu_title}</a></div>\n"
+ " {/i f}\n"
+ " {/generic_page_body}\n"
+ " {!-- ra:0000000019ecd9c0000000005dbc5212 --}{if {row2_space_col} > 0}\n"
+ " <div class=\"columns large-{row2_space_col} medium-{row2_space_col} small-12\"> </div>\n"
+ " {/if}\n\n"
+ " {/exp:vbi_utils:get_calcu_pair}\n"
+ " </div>\n"
+ " </div>\n"
+ " {/if}\n\n"
+ " <!-- Grid Gallery -->\n"
+ " {!-- ra:0000000019ecd9e8000000005dbc5212 --}{if {generic_page_gallery:total_rows} > 0 || generic_page_gallery_intr o != ''}\n"
+ " <div class=\"row\">\n"
+ " <div class=\"block-white\">\n"
+ " <div class=\"row\">\n"
+ " <div class=\"columns large-12 medium-12 small-12\">\n"
+ " {generic_page_gallery_intro}\n"
+ " </div>\n"
+ " </div>\n"
+ " <div class=\"row\">\n"
+ " <div class=\"columns large-12 medium-12 small-12\">\n"
+ " <ul class=\"large-block-grid-3\">\n"
+ " {generic_page_gallery}\n"
+ " <li>\n"
+ " {!-- ra:0000000019ecd9f0000000005dbc5212 --}{if generic_page_gallery:image != ''}\n"
+ " <a href=\"{generic_page_gallery:link_url}\"><img c lass=\"close2x-precise\" src=\"{generic_page_gallery:image}\"></a>\n"
+ " {!-- ra:0000000019ecd900000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == 'Image'}\n"
+ " <a href=\"{generic_page_gallery:link_url}\"><img class=\"close2x-precise\" src=\"{generic_page_gallery:media_url}\"></a>\n"
+ " {!-- ra:0000000019ecd910000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == 'YouTube'}\n"
+ " <iframe src=\"{generic_page_gallery:media_url}\" frameborder=\"0\" allowfullscreen></ifr ame>\n"
+ " {!-- ra:0000000019ecd926000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == 'Slideshare'}\n"
+ " <iframe src=\"{generic_page_gallery:media_url}\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen></iframe>\n"
+ " {/if}\n"
+ " <h3 class=\"close2x-precise\"><a href=\"{generic_page_gallery:link_url}\">{generic_page_gallery:link_text}</a></h3>\n"
+ " <p>{g eneric_page_gallery:text}</p>\n"
+ " </li>\n"
+ " {/generic_page_gallery}\n"
+ " </ul>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " {/if}\n\n\n"
+ " {layout:preBodyContent}\n\n"
+ " {!-- ra:0000000019ecd946000000005dbc5212 --}{if {generic_page_body:total_rows} > 0}\n"
+ " <div class=\"row\">\n"
+ " <div class=\"block-white flush-left {!-- ra:0000000019ecd95a000000005dbc5212 --}{if {generic_page_body:total_rows} == 1 && {generic_page_body_sidebars:total_rows search:alignment='left'} == 0}block-white-content{/if}\">\n"
+ " <div class=\"row {!-- ra:0000000019ecd962000000005dbc5212 --}{if {generic_page_body:total_rows} == 1 && {generic_page_body_sidebars:total_rows search:alignment='left'} == 0}row-content{/if}\">\n\n"
+ " {!-- ra:0000000019ecd88a000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment=\"left\"} > 0}\n"
+ " <div class=\"columns {!-- ra:0000000019ecd89e000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment=\"right\"} > 0}large-3 medium-3{if:else}large-4 medium-4{/if} small-12\">\n"
+ " <div class=\"sidebar\">\n"
+ " {generic_page_body_sidebars search:alignment=\"left\"}\n"
+ " {!-- ra:0000000019ecd8a4000000005dbc5212 --}{if {generic_page_body_sidebars:count} > 1}\n"
+ " <hr class=\"split-sidebar\">\n"
+ " {/if}\n"
+ " <h3><i class=\"{generic_page_body_sidebars:icon}\"></i> {generic_page_body_sidebars:header}</h3>\n"
+ " {generic_page_body_sidebars:content}\n"
+ " {/generic_page_body_sidebars}\n"
+ " </div>\n"
+ " </div>\n"
+ " {/if}\n\n"
+ " <div class=\"columns {!-- ra:0000000019ecd8c8000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment='left'} > 0 && {generic_page_body_sidebars:total_rows search:alignment='right'} > 0}large-6 medium-6{!-- ra:0000000019ecd8d4000000005dbc5212 --}{if:elseif {generic_page_body_sidebars:total_rows search:alignment='left'} > 0 || {generic_page_body_sidebars:total_rows search:alignment='right'} > 0}large-8 medium-8{if:else}large-12 medium-12{/if} small-12\">\n"
+ " {generic_page_body}\n"
+ " <div id=\"{exp:vbi_utils:url_friendly value='{generic_page_body:menu_title}'}\" class=\"body-content\">\n"
+ " {!-- ra:0000000019ecd8f6000000005dbc5212 --}{if generic_page_body:content_title != ''}\n"
+ " <header class=\"section-subheader\">\n"
+ " <h2> {generic_page_body:content_title}</h2>\n"
+ " </header>\n"
+ " {/if}\n"
+ " {!-- ra:0000000019ecd800000000005dbc5212 --}{if generic_page_body:body_template != ''}\n"
+ " {embed=\"{generic_page_body:body_template}\"}\n"
+ " {/if}\n"
+ " {generic_page_body:content}\n"
+ " </div>\n"
+ " {/generic_page_body}\n"
+ " {!-- ra:0000000019ecd828000000005dbc5212 --}{if {generic_page_body:total_rows} > 1}\n"
+ " <p><a href=\"#main-header\" class=\"smoothScroll\"><i class=\"icon icon-carat-up\"></i> Back to top</a></p>\n"
+ " {/if}\n"
+ " </div>\n"
+ " {!-- ra:0000000019ecd838000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment=\"right\"} > 0}\n"
+ " <div class=\"columns {!-- ra:0000000019ecd84c000000005dbc5212 --}{if {generic _page_body_sidebars:total_rows search:alignment=\"left\"} > 0}large-3 medium-3{if:else}large-4 medium-4{/if} small-12\">\n"
+ " {generic_page_body_sidebars search:alignment=\"right\"}\n"
+ " <div class=\"sidebar news-sidebar-list round-left space-below\">\n"
+ " <header>\n"
+ " <h5><i class=\"{generic_page_body_sidebars:icon}\"></i> {generic_page_body_sidebars:header}</h5>\n"
+ " </header>\n"
+ " {generic_page_body_sidebars:content}\n"
+ " </div>\n"
+ " {/generic_page_body_sidebars}\n"
+ " </di v>\n"
+ " {/if}\n"
+ " </div>\n"
+ " </div>\n"
+ " </div>\n"
+ " {/if}\n\n"
+ " {generic_page_bottom_link}\n"
+ " <div class=\"row triangle-tiles text-center\">\n"
+ " <p class=\"close link-on-dark-icons\">\n"
+ " <a href=\"{generic_page_bottom_link:link_url}\">{generic_page_bottom_link:link_text} <i class=\"icon-carat\"></i></a>\n"
+ " </p>\n"
+ " </div>\n"
+ " {/generic_page_bottom_link}\n";
final Pattern pattern = Pattern.compile(regex, Pattern.DOTALL);
final Matcher matcher = pattern.matcher(string);
if (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