Regular Expressions 101

Save & Share

Flavor

  • PCRE2 (PHP >=7.3)
  • PCRE (PHP <7.3)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java 8
  • .NET 7.0 (C#)
  • Rust
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests

Tools

Sponsors
There are currently no sponsors. Become a sponsor today!
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

/
/
gi

Test String

Code Generator

Generated Code

# coding=utf8 # the above tag defines encoding for this document and is for Python 2.x compatibility import re regex = r"(?:(?:from|join)(?:\s|\()+((?:\w*\.\w*)+)(?:\s|\))+)" test_str = ("SELECT T.IDP_WAREHOUSE_ID\n" " ,T.IDP_AUDIT_ID\n" " ,T.IDP_DATA_ID\n" " ,T.IDP_DATA_DATE\n" " ,T.TRADESYSTEM\n" " ,T.SOURCESYSTEM\n" " ,T.SUBSYSTEM\n" " ,T.TRADEDATE\n" " ,T.VALUATIONDATE\n" " ,T.TRADEID\n" " ,T.TRADETYPE\n" " ,T.TRADESTATUS\n" " ,T.MAPPEDTRADESTATUS\n" " ,T.RAWBOOKINGLOCATION\n" " ,T.MAPPEDBOOKINGLOCATION\n" " ,T.BOOKINGLOCREGION\n" " ,T.CMCIFBOOKINGLOCATION\n" " ,T.CMCIFBOOKINGLOCATIONREGION\n" " ,T.COUNTERPARTYACCOUNTID\n" " ,T.COUNTERPARTYSHORTNAME\n" " ,T.COUNTERPARTYTYPE\n" " ,T.CUSTOMERNAME\n" " ,T.CUSTOMERADDRESS\n" " ,T.CUSTOMERCOUNTRYCODE\n" " ,T.CUSTOMERCOUNTRYNAME\n" " ,T.CAMLO_RISK\n" " ,T.US_BSA_RISK\n" " ,T.RISKRATING\n" " ,T.PRODUCTTYPE\n" " ,T.PRODUCT\n" " ,T.CMCIFPRODUCTTYPE\n" " ,T.QUANTITY\n" " ,T.PRICE\n" " ,T.CURRENCY\n" " ,T.CURRENCY_ISO_CODE\n" " ,T.CURRENCY_DESCRIPTION\n" " ,T.\"VALUE\"\n" " ,T.TRADERID\n" " ,T.TRANSACTIONACTIVITY\n" " ,T.SOURCETRADEID\n" " ,T.TRADESEQUENCENUMBER\n" " ,T.BASECURRENCY\n" " ,T.BASECURRPRICE\n" " ,T.BASECURRQUANTITY\n" " ,T.BASECURRVALUE\n" " ,T.ISIN\n" " ,T.CUSIP\n" " ,T.RESP\n" " ,T.FACILITY_GLOBAL_COMMITMENT\n" " ,T.FACILITY_HOST_BANK_NET_AMT\n" " ,T.MAP_TRADESYSTEM\n" " ,T.MAP_ACCOUNTFIELDNAME\n" " ,T.MAP_COUNTERPARTYACCOUNTID\n" " ,T.MAP_CUID\n" " ,T.MAP_CIF\n" " ,T.MAP_UEN\n" " ,RC.RAW AS CHICAGO_RAW\n" " ,RC.RESPONSIBILITY_CENTER AS CHICAGO_RESPONSIBILITY_CENTER\n" " ,RC.DESK AS CHICAGO_DESK\n" " ,RC.BUSINESS_SEGMENT AS CHICAGO_BUSINESS_SEGMENT\n" " ,RC.LOB AS CHICAGO_LOB\n" " ,RC.OPERATING_GROUP AS CHICAGO_OPERATING_GROUP\n" " ,AFF.RAW AS AFF_RAW\n" " ,ISS.RAW AS ISS_RAW\n" " ,EC1.ENTITYCOUNTRY AS REGISTRATION_COUNTRY\n" " ,EC2.ENTITYCOUNTRY AS PRINCIPAL_PLACE_OF_BUSINESS\n" " ,ENT.CIF AS ENT_CIF\n" " ,ENT.UEN AS ENT_UEN\n" " ,ENT.ENTITYLEGALNAME AS ENT_ENTITYLEGALNAME\n" " ,ENT.ENTITYADDRESS AS ENT_ENTITYADDRESS\n" " ,ENT.ENTITYACCOUNTNUMBER AS ENT_ENTITYACCOUNTNUMBER\n" " ,ENT.ENTITYSTATUS AS ENT_ENTITYSTATUS\n" " ,ENT.IFI_FLAG AS ENT_IFI_FLAG\n" " ,ENT.SICCAN AS ENT_SICCAN\n" " ,ENT.SICUS AS ENT_SICUS\n" " ,ENT.NBFI_312 AS ENT_NBFI_312\n" " ,ENT.NBFI_NON_312 AS ENT_NBFI_NON_312\n" " ,ENT.RMA AS ENT_RMA\n" " ,ENT.SICCAN_DESC AS ENT_SICCAN_DESC\n" " ,ENT.SICUS_DESC AS ENT_SICUS_DESC\n" " ,ENT.P_AND_C AS ENT_P_AND_C\n" " ,ENT.OFAC AS ENT_OFAC\n" " ,ENT.RMA_ONLY AS ENT_RMA_ONLY\n" " ,ENT.CONN_UEN AS ENT_CONN_UEN\n" " ,ENT.CM_INDICATOR AS ENT_CM_INDICATOR\n" " ,ENT.BMO_RESP AS ENT_BMO_RESP\n" " ,ENT.HARRIS_RESP AS ENT_HARRIS_RESP\n" " ,ENT.PRIM_IND AS ENT_PRIM_IND\n" " ,ENT.PM_CODE AS ENT_PM_CODE\n" " ,APPR.CUSTOMER_NAME AS APPR_CUSTOMER_NAME\n" " ,APPR.UEN AS APPR_UEN\n" " ,APPR.COUNTRY AS APPR_COUNTRY\n" " ,APPR.CONDITIONAL_APPROVAL AS APPR_CONDITIONAL_APPROVAL\n" " ,APPR.PRODUCTS AS APPR_PRODUCTS\n" " ,APPR_FI.CUSTOMER_NAME AS APPR_FI_CUSTOMER_NAME\n" " ,APPR_FI.UEN AS APPR_FI_UEN\n" " ,APPR_FI.COUNTRY AS APPR_FI_COUNTRY\n" " ,APPR_FI.CONDITIONAL_APPROVAL AS APPR_FI_CONDITIONAL_APPROVAL\n" " ,APPR_FI.PRODUCTS AS APPR_FI_PRODUCTS\n" " ,APMS.UEN AS APMS_UEN\n" " ,APMS.CIF AS APMS_CIF\n" " ,APMS.ENTITY_LEGAL_NAME AS APMS_ENTITY_LEGAL_NAME\n" " ,APMS.ENTITY_SHORT_NAME AS APMS_ENTITY_SHORT_NAME\n" " ,APMS.OWNERSHIP_CLASS AS APMS_OWNERSHIP_CLASS\n" " ,APMS.ENTITY_CLASSIFICATION AS APMS_ENTITY_CLASSIFICATION\n" " ,APMS.ASSET_CLASSIFICATION AS APMS_ASSET_CLASSIFICATION\n" " ,APMS.BMO_RC AS APMS_BMO_RC\n" " ,APMS.ENTITY_TYPE AS APMS_ENTITY_TYPE\n" " ,APMS.TIN_SSN AS APMS_TIN_SSN\n" "FROM (\n" " (\n" " (\n" " (\n" " (\n" " (\n" " (\n" " (\n" " (\n" " (\n" " SELECT A.IDP_WAREHOUSE_ID\n" " ,A.IDP_AUDIT_ID\n" " ,A.IDP_DATA_ID\n" " ,A.IDP_DATA_DATE\n" " ,A.TRADESYSTEM\n" " ,A.SOURCESYSTEM\n" " ,A.SUBSYSTEM\n" " ,A.TRADEDATE\n" " ,A.VALUATIONDATE\n" " ,A.TRADEID\n" " ,A.TRADETYPE\n" " ,A.TRADESTATUS\n" " ,A.MAPPEDTRADESTATUS\n" " ,A.RAWBOOKINGLOCATION\n" " ,A.MAPPEDBOOKINGLOCATION\n" " ,A.BOOKINGLOCREGION\n" " ,A.CMCIFBOOKINGLOCATION\n" " ,A.CMCIFBOOKINGLOCATIONREGION\n" " ,A.COUNTERPARTYACCOUNTID\n" " ,A.COUNTERPARTYSHORTNAME\n" " ,A.COUNTERPARTYTYPE\n" " ,A.CUSTOMERNAME\n" " ,A.CUSTOMERADDRESS\n" " ,A.CUSTOMERCOUNTRYCODE\n" " ,A.CUSTOMERCOUNTRYNAME\n" " ,A.CAMLO_RISK\n" " ,A.US_BSA_RISK\n" " ,A.RISKRATING\n" " ,A.PRODUCTTYPE\n" " ,A.PRODUCT\n" " ,A.CMCIFPRODUCTTYPE\n" " ,A.QUANTITY\n" " ,A.PRICE\n" " ,A.CURRENCY\n" " ,A.CURRENCY_ISO_CODE\n" " ,A.CURRENCY_DESCRIPTION\n" " ,A.\"VALUE\"\n" " ,A.TRADERID\n" " ,A.TRANSACTIONACTIVITY\n" " ,A.SOURCETRADEID\n" " ,A.TRADESEQUENCENUMBER\n" " ,A.BASECURRENCY\n" " ,A.BASECURRPRICE\n" " ,A.BASECURRQUANTITY\n" " ,A.BASECURRVALUE\n" " ,A.ISIN\n" " ,A.CUSIP\n" " ,A.RESP\n" " ,A.FACILITY_GLOBAL_COMMITMENT\n" " ,A.FACILITY_HOST_BANK_NET_AMT\n" " ,MAP.TRADESYSTEM AS MAP_TRADESYSTEM\n" " ,MAP.ACCOUNTFIELDNAME AS MAP_ACCOUNTFIELDNAME\n" " ,MAP.COUNTERPARTYACCOUNTID AS MAP_COUNTERPARTYACCOUNTID\n" " ,MAP.CUID AS MAP_CUID\n" " ,MAP.CIF AS MAP_CIF\n" " ,CASE \n" " WHEN (A.TRADESYSTEM = 'LIQ'::\"VARCHAR\")\n" " THEN A.COUNTERPARTYACCOUNTID\n" " ELSE (\"VARCHAR\" (MAP.UEN))::VARCHAR(16)\n" " END AS MAP_UEN\n" " FROM (\n" " BLUEHOUSE.V_TRANSACTIONS A LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING MAP ON (\n" " (\n" " (\n" " (A.COUNTERPARTYACCOUNTID = UPPER(BTRIM(MAP.COUNTERPARTYACCOUNTID)))\n" " AND (UPPER(A.TRADESYSTEM) = UPPER(MAP.TRADESYSTEM))\n" " )\n" " AND (\n" " MAP.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITYMAPPING\n" " )\n" " )\n" " )\n" " )\n" " )\n" " ) T LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_RCMAPPING RC ON (\n" " (\n" " (RC.RAW = T.RESP)\n" " AND (RC.IDP_END_DATE = '2099-12-31'::DATE)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_AFFILIATED_RCS AFF ON (\n" " (\n" " (AFF.RAW = T.RESP)\n" " AND (AFF.IDP_END_DATE = '2099-12-31'::DATE)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_REF_CHICAGO_BOOKING_ISSUES_RCS ISS ON (\n" " (\n" " (ISS.RAW = T.RESP)\n" " AND (ISS.IDP_END_DATE = '2099-12-31'::DATE)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY EC1 ON (\n" " (\n" " (\n" " (\n" " EC1.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY\n" " )\n" " )\n" " AND ((\"VARCHAR\" (EC1.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " AND (UPPER(EC1.ENTITYADDRESSTYPE) = 'REGISTERED'::\"VARCHAR\")\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY EC2 ON (\n" " (\n" " (\n" " (\n" " EC2.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIESCOUNTRY\n" " )\n" " )\n" " AND ((\"VARCHAR\" (EC2.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " AND (UPPER(EC2.ENTITYADDRESSTYPE) = 'PRINCIPAL PLACE OF BUSINESS'::\"VARCHAR\")\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES ENT ON (\n" " (\n" " (\n" " ENT.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_ENTITIES\n" " )\n" " )\n" " AND ((\"VARCHAR\" (ENT.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312 APPR ON (\n" " (\n" " (\n" " APPR.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_312\n" " )\n" " )\n" " AND ((\"VARCHAR\" (APPR.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI APPR_FI ON (\n" " (\n" " (\n" " APPR_FI.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APPROVED_US_FI\n" " )\n" " )\n" " AND ((\"VARCHAR\" (APPR_FI.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " )\n" " ) LEFT JOIN IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES APMS ON (\n" " (\n" " (\n" " APMS.IDP_DATA_ID = (\n" " SELECT MAX(IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES.IDP_DATA_ID) AS MAX\n" " FROM IDP_PRD_LEVEL1.BLUEHOUSE.L1_WRK_APMS_ENTITIES\n" " )\n" " )\n" " AND ((\"VARCHAR\" (APMS.UEN))::VARCHAR(16) = T.MAP_UEN)\n" " )\n" " )\n" " )\n" "WHERE (\n" " (UPPER(T.CMCIFBOOKINGLOCATION) ~ ~ LIKE_ESCAPE('%CHICAGO%'::\"VARCHAR\", '\\'::\"VARCHAR\"))\n" " OR (T.RESP = AFF.RAW)\n" " );\n") matches = re.finditer(regex, test_str, re.IGNORECASE) for matchNum, match in enumerate(matches, start=1): print ("Match {matchNum} was found at {start}-{end}: {match}".format(matchNum = matchNum, start = match.start(), end = match.end(), match = match.group())) for groupNum in range(0, len(match.groups())): groupNum = groupNum + 1 print ("Group {groupNum} found at {start}-{end}: {group}".format(groupNum = groupNum, start = match.start(groupNum), end = match.end(groupNum), group = match.group(groupNum))) # Note: for Python 2.7 compatibility, use ur"" to prefix the regex and u"" to prefix the test string and substitution.

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