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

import re regex = re.compile(r"{generic_page_slideshow((?::\S+?)?)(\s.*?)?}(.*?){\/generic_page_slideshow\1}", flags=re.DOTALL) test_str = ("\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=\"[{&quot;visible&quot;: 1, &quot;itemMinWidth&quot;: 300, &quot;itemMargin&quot;: 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\">&nbsp;</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\">&nbsp;</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\">&nbsp;</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\">&nbsp;</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") match = regex.search(test_str) if match: print(f"Match was found at {match.start()}-{match.end()}: {match.group()}") for group_num, group in enumerate(match.groups(), start=1): print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")

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 Python, please visit: https://docs.python.org/3/library/re.html