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

Substitution
Processing...

Code Generator

Generated Code

import re regex = re.compile(r"href=\"\#Component\"\>([a-zA-Z]*)", flags=re.MULTILINE) test_str = ("\n" "<li class=\"Testclass\" id=\"yui-gen13\" groupindex=\"0\" index=\"1\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#autoCompMenu\">Component 1</a>\n" "<div id=\"autoCompMenu\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_salesrep/maintAutoCompleteCodes.html?table=c_customer_visits&amp;field=business_type&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Show 1</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_salesrep/maintAutoCompleteCodes.html?table=c_customer_visits&amp;field=phone_2&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Show 2</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_salesrep/maintAutoCompleteCodes.html?table=c_customer_visits&amp;field=current_provider&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Show 3</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_salesrep/maintAutoCompleteCodes.html?table=c_customer_visits&amp;field=purpose_of_visit&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Show 4</a>\n" "</li>\n" "<\n" "<li class=\"Testclass\" id=\"yui-gen17\" groupindex=\"0\" index=\"5\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#Component\">Component2</a>\n" "<div id=\"hazardous\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\">\n" "<ul>\n" "<l\n" "<li class=\"Testclass\" id=\"yui-gen18\" groupindex=\"0\" index=\"6\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#ImportItem\">Import Data</a>\n" "<div id=\"ImportItem\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\" style=\"\">\n\n" "<li class=\"yuimenuitem\" id=\"yui-gen36\" groupindex=\"0\" index=\"8\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/importRouteStops.html?AddMode=NEW&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 1</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen37\" groupindex=\"0\" index=\"9\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/importRoutes-1.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 2</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen38\" groupindex=\"0\" index=\"10\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_import/importRunsheet-1.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 3</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen39\" groupindex=\"0\" index=\"11\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_import/importSchedules-1.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 4</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen40\" groupindex=\"0\" index=\"12\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_import/importServicesNew-1.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 5</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen41\" groupindex=\"0\" index=\"13\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_import/importStreetBins-1.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 6</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen42\" groupindex=\"0\" index=\"14\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRollback.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Frame 7</a>\n" "</li>\n" "</ul>\n" "</div>\n" "<div class=\"yui-menu-shadow\" style=\"height: 303px;\"></div></div>\n" "</li>\n" "<li class=\"Testclass\" id=\"yui-gen19\" groupindex=\"0\" index=\"7\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#tipItem\">Other Sites</a>\n" "<div id=\"tipItem\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\" style=\"\">\n" "<ul class=\"first-of-type\" style=\"\">\n" "<li class=\"yuimenuitem first-of-type\" id=\"yui-gen25\" groupindex=\"0\" index=\"0\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintTips.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu test</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen26\" groupindex=\"0\" index=\"1\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/importTipFees.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu test 2</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen27\" groupindex=\"0\" index=\"2\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_landfill/maintSites.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu test 3</a>\n" "</li>\n" "</ul>\n" "</div>\n" "<div class=\"yui-menu-shadow\" style=\"height: 67px;\"></div></div>\n" "</li>\n" "<li class=\"Testclass\" id=\"yui-gen20\" groupindex=\"0\" index=\"8\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#Menu\">Menu test 4</a>\n" "<div id=\"PDFTemplatesMenu\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"#SheetMenu\">Run Setup</a>\n" "<div id=\"RunSheetMenu\" class=\"yuimenu\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRSCoverSetupBulk.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Bulk Runsheet Cover</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRSLayout.html?RSOrientation=L&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Landscape Runsheet Layout setup</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRSLayout.html?RSOrientation=P&amp;OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Portrait Runsheet Layout Setup</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRSCoverSetup.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Regular run sheet cover </a>\n" "</li>\n" "</ul>\n" "</div>\n" "</div>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../PDF/maintPDFTemplates.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Upload Templates</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"#PDFTempFields\">View Template Fields</a>\n" "<div id=\"PDFTempFields\" class=\"yuimenu\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../PDF/dispBookingMergeFields.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Booking Documents</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../PDF/dispCustMergeFields.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Customer Documents</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../PDF/dispProspectMergeFields.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Prospect Documents</a>\n" "</li>\n" "</ul>\n" "</div>\n" "</div>\n" "</li>\n" "</ul>\n" "</div>\n" "</div>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen21\" groupindex=\"0\" index=\"9\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintPricing.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Pricing</a>\n" "</li>\n" "<li class=\"yuimenuitem\" id=\"yui-gen22\" groupindex=\"0\" index=\"10\">\n" "<a class=\"yuimenuitemlabel\" href=\"../calendaring/setupGoogleCalendar.p?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Setup Google Calendar</a>\n" "</li>\n" "<li class=\"Testclass\" id=\"yui-gen23\" groupindex=\"0\" index=\"11\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#SubbMenu\">Sub Contractors</a>\n" "<div id=\"SubbMenu\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_subbies/searchSubbCosts.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Review</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_subbies/maintSubbRate.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" \"=\"\" target=\"InternalFrame\">Rates</a>\n" "</li>\n" "</ul>\n" "</div>\n" "</div>\n" "</li>\n" "<li class=\"Testclass\" id=\"yui-gen24\" groupindex=\"0\" index=\"12\">\n" "<a class=\"yuimenuitemlabel yuimenuitemlabel-hassubmenu\" href=\"#codesMenu\">System Tables</a>\n" "<div id=\"codesMenu\" class=\"yuimenu yui-module yui-overlay yui-overlay-hidden\" style=\"z-index: 1; position: absolute; visibility: hidden;\">\n" "<div class=\"bd\">\n" "<ul>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintAudit.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu 1</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintCustomerClass.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu 2</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintEftProvider.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Menu 3</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_dispatch/maintMDTCodes.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">MDT Codes</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_dispatch/maintMDTConfigVersion.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">MDT Configurations</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintNoteTypes.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 2</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintOrganizations.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 3</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintPayMethod.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 4</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintRegWasteCode.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 5</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintServCode.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 6</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintServType.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 7</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../we_general/maintTermsCode.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 8</a>\n" "</li>\n" "<li class=\"yuimenuitem\">\n" "<a class=\"yuimenuitemlabel\" href=\"../general/test.html?OwnerID=35&amp;CompanyID=test&amp;Username=usr1&amp;Password=xxxxxxx;ProductID=&amp;ProductName=&amp;LoginID=357\" target=\"InternalFrame\">Data 9</a>\n" "</li>\n" "</ul>\n" "</div>\n" "</div>\n" "</li>\n" "</ul>") subst = "($1)" result = regex.sub(subst, test_str) if result: print(result)

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