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
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
Processing...

Test String

Code Generator

Generated Code

import re regex = re.compile(r"(?:(?:from|join)(?:\s|\()+((?:\w*\.\w*)+)(?:\s|\))+)", flags=re.IGNORECASE) 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 = regex.finditer(test_str) for match_num, match in enumerate(matches, start=1): print(f"Match {match_num} 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