Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • Save & Share
  • Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
An explanation of your regex will be automatically generated as you type.
Detailed match information will be displayed here automatically.
  • All Tokens
  • Common Tokens
  • General Tokens
  • Anchors
  • Meta Sequences
  • Quantifiers
  • Group Constructs
  • Character Classes
  • Flags/Modifiers
  • Substitution
  • A single character of: a, b or c
    [abc]
  • A character except: a, b or c
    [^abc]
  • A character in the range: a-z
    [a-z]
  • A character not in the range: a-z
    [^a-z]
  • A character in the range: a-z or A-Z
    [a-zA-Z]
  • Any single character
    .
  • Alternate - match either a or b
    a|b
  • Any whitespace character
    \s
  • Any non-whitespace character
    \S
  • Any digit
    \d
  • Any non-digit
    \D
  • Any word character
    \w
  • Any non-word character
    \W
  • Non-capturing group
    (?:...)
  • Capturing group
    (...)
  • Zero or one of a
    a?
  • Zero or more of a
    a*
  • One or more of a
    a+
  • Exactly 3 of a
    a{3}
  • 3 or more of a
    a{3,}
  • Between 3 and 6 of a
    a{3,6}
  • Start of string
    ^
  • End of string
    $
  • A word boundary
    \b
  • Non-word boundary
    \B

Regular Expression
Processing...

Test String

Code Generator

Generated Code

$re = '/{generic_page_slideshow((?::\S+?)?)(\s.*?)?}(.*?){\/generic_page_slideshow\1}/s'; $str = ' {!-- ra:0000000019ecdbb0000000005dbc5212 --} {layout:set name="title"}{title}{/layout:set} {layout:set name="entry_id"}{entry_id}{/layout:set} {layout:set name="body_class"}{generic_page_theme}{/layout:set} {!-- ra:0000000019ecdbf4000000005dbc5212 --}{if {generic_page_slideshow:total_rows} > 0} <div class="row"> <div class="carousel overlay-nav"> <div data-navigation="nav-carousel1" data-crsl="[{&quot;visible&quot;: 1, &quot;itemMinWidth&quot;: 300, &quot;itemMargin&quot;: 0}]" class="crsl-items"> <div class="crsl-wrap"> {generic_page_slideshow} <figure class="crsl-item"> <img src="{generic_page_slideshow:image}"> <figcaption class="crsl-caption"> <p class="close">{generic_page_slideshow:caption}</p> </figcaption> </figure> {/generic_page_slideshow} </div> </div> <div id="nav-carousel1" class="crsl-nav"> <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> </div> </div> </div> <hr class="block-spacer"> {/if} <!-- Page Overview with optional Sidebar --> {generic_page_overview_1} <header id="page-header" class="row research-header-heightmatch columned"> <div class="columns {!-- ra:0000000019ecdb18000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0}large-8{if:else}large-12{/if} default-padding"> <h2>{generic_page_overview_1:text}</h2> {!-- ra:0000000019ecdb26000000005dbc5212 --}{if generic_page_overview_1:link_text != \'\'} <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> {/if} </div> {!-- ra:0000000019ecdb32000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0} <div class="columns large-4 triangle-tiles research-header-heightmatch"> <h 3 class="bold">{generic_page_overview_1:side_bar_text}</h3> <ul class="close white-links white-icons text-lightweight loose-list-less"> {/if} {/generic_page_overview_1} {!-- ra:0000000019ecdb5e000000005dbc5212 --}{if {generic_page_overview_1:total_rows} > 0} {!-- ra:0000000019ecdb52000000005dbc5212 --}{if {generic_page_overview_1_links:total_rows} > 0} {generic_page_overview_1_links} <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> {/generic_page_overview_1_links} </ul> </div> {/if} </header> <hr class="block-spacer"> {/if} <!-- Grey triangle box with optional picture. --> {generic_page_overview_2} <div class="row"> <div class="triangle-tiles"> <div class="row"> <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}"> {!-- ra:0000000019ecda96000000005dbc5212 --}{if generic_page_overview_2:title_url != \'\'} <h2><a href="{generic_page_overview_2:title_url}">{generic_page_overview_2:title}</a></h2> {if:else} <h2>{generic_page_overview_2:title}</h2> {/if} <h3>{generic_page_overview_2:text}</h3> <ul class="link-on-dark-icons"> {/generic_page_overview_2} {!-- ra:0000000019ecdab4000000005dbc5212 --}{if {generic_page_overview_2:total_rows} > 0} {!-- ra:0000000019ecdac8000000005dbc5212 --}{if {generic_page_overview_2_links:total_rows} > 0} {generic_page_overview_2_links} <li><a href="{generic_page_overview_2_links:link_url}">{generic_page_overview_2_links:link_text} <i class="icon-carat"></i></a></li> {/generic_page_overview_2_links} {/if} </ul> </div> {generic_page_overview_2} {!-- ra:0000000019ecdad2000000005dbc5212 --}{if generic_page_overview_2:image != \'\'} <div class="columns large-6 "><img src="{generic_page_overview_2:image}"></div> {!-- ra:0000000019ecdae0000000005dbc5212 --}{if:elseif generic_page_overview_2:media_url != \'\'} <div class="columns large-6"> </div> {/if} {/generic_page_overview_2} </div> </div> </div> <!--hr class="block-spacer"--> {/if} <!-- stick navigation--> {!-- ra:0000000019ecda3c000000005dbc5212 --}{if {generic_page_body:total_rows} > 1} <div class="sticky-wrapper sticky-horizontal"> <div class="row"> {exp:vbi_utils:get_calcu_pair num_items=\'{generic_page_body:total_rows}\'} {!-- ra:0000000019ecda32000000005dbc5212 --}{if {row1_space_col} > 0} <div class="columns large-{row1_space_col} medium-{row1_space_col} small-12">&nbsp;</div> {/if} {generic_page_body} {!-- ra:0000000019ecda5e000000005dbc5212 --}{if {generic_page_body:field_row_count} <= {limit_number}} <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> {/if} {/generic_page_body} {!-- ra:0000000019ecda70000000005dbc5212 --}{i f {row1_space_col} > 0} <div class="columns large-{row1_space_col} medium-{row1_space_col} small-12">&nbsp;</div> {/if} </div> <div class="row"> {!-- ra:0000000019ecd982000000005dbc5212 --}{if {row2_space_col} > 0} <div class="columns large-{row2_space_col} medium-{row2_space_col} small-12">&nbsp;</div> {/if} {generic_page_body} {!-- ra:000000 0019ecd9ae000000005dbc5212 --}{if {generic_page_body:field_row_count} > {limit_number}} <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> {/i f} {/generic_page_body} {!-- ra:0000000019ecd9c0000000005dbc5212 --}{if {row2_space_col} > 0} <div class="columns large-{row2_space_col} medium-{row2_space_col} small-12">&nbsp;</div> {/if} {/exp:vbi_utils:get_calcu_pair} </div> </div> {/if} <!-- Grid Gallery --> {!-- ra:0000000019ecd9e8000000005dbc5212 --}{if {generic_page_gallery:total_rows} > 0 || generic_page_gallery_intr o != \'\'} <div class="row"> <div class="block-white"> <div class="row"> <div class="columns large-12 medium-12 small-12"> {generic_page_gallery_intro} </div> </div> <div class="row"> <div class="columns large-12 medium-12 small-12"> <ul class="large-block-grid-3"> {generic_page_gallery} <li> {!-- ra:0000000019ecd9f0000000005dbc5212 --}{if generic_page_gallery:image != \'\'} <a href="{generic_page_gallery:link_url}"><img c lass="close2x-precise" src="{generic_page_gallery:image}"></a> {!-- ra:0000000019ecd900000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == \'Image\'} <a href="{generic_page_gallery:link_url}"><img class="close2x-precise" src="{generic_page_gallery:media_url}"></a> {!-- ra:0000000019ecd910000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == \'YouTube\'} <iframe src="{generic_page_gallery:media_url}" frameborder="0" allowfullscreen></ifr ame> {!-- ra:0000000019ecd926000000005dbc5212 --}{if:elseif generic_page_gallery:media_type == \'Slideshare\'} <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> {/if} <h3 class="close2x-precise"><a href="{generic_page_gallery:link_url}">{generic_page_gallery:link_text}</a></h3> <p>{g eneric_page_gallery:text}</p> </li> {/generic_page_gallery} </ul> </div> </div> </div> </div> {/if} {layout:preBodyContent} {!-- ra:0000000019ecd946000000005dbc5212 --}{if {generic_page_body:total_rows} > 0} <div class="row"> <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}"> <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}"> {!-- ra:0000000019ecd88a000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment="left"} > 0} <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"> <div class="sidebar"> {generic_page_body_sidebars search:alignment="left"} {!-- ra:0000000019ecd8a4000000005dbc5212 --}{if {generic_page_body_sidebars:count} > 1} <hr class="split-sidebar"> {/if} <h3><i class="{generic_page_body_sidebars:icon}"></i> {generic_page_body_sidebars:header}</h3> {generic_page_body_sidebars:content} {/generic_page_body_sidebars} </div> </div> {/if} <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"> {generic_page_body} <div id="{exp:vbi_utils:url_friendly value=\'{generic_page_body:menu_title}\'}" class="body-content"> {!-- ra:0000000019ecd8f6000000005dbc5212 --}{if generic_page_body:content_title != \'\'} <header class="section-subheader"> <h2> {generic_page_body:content_title}</h2> </header> {/if} {!-- ra:0000000019ecd800000000005dbc5212 --}{if generic_page_body:body_template != \'\'} {embed="{generic_page_body:body_template}"} {/if} {generic_page_body:content} </div> {/generic_page_body} {!-- ra:0000000019ecd828000000005dbc5212 --}{if {generic_page_body:total_rows} > 1} <p><a href="#main-header" class="smoothScroll"><i class="icon icon-carat-up"></i> Back to top</a></p> {/if} </div> {!-- ra:0000000019ecd838000000005dbc5212 --}{if {generic_page_body_sidebars:total_rows search:alignment="right"} > 0} <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"> {generic_page_body_sidebars search:alignment="right"} <div class="sidebar news-sidebar-list round-left space-below"> <header> <h5><i class="{generic_page_body_sidebars:icon}"></i> {generic_page_body_sidebars:header}</h5> </header> {generic_page_body_sidebars:content} </div> {/generic_page_body_sidebars} </di v> {/if} </div> </div> </div> {/if} {generic_page_bottom_link} <div class="row triangle-tiles text-center"> <p class="close link-on-dark-icons"> <a href="{generic_page_bottom_link:link_url}">{generic_page_bottom_link:link_text} <i class="icon-carat"></i></a> </p> </div> {/generic_page_bottom_link} '; preg_match($re, $str, $matches, PREG_OFFSET_CAPTURE, 0); // Print the entire match result var_dump($matches);

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 PHP, please visit: http://php.net/manual/en/ref.pcre.php