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

/
/
g

Test String

Substitution

Processing...

Code Generator

Generated Code

#include <MsgBoxConstants.au3> ; to declare the Constants of MsgBox Local $sRegex = "(')(&[A-Za-z_]*)(')" Local $sString = "SELECT '&TRIGGER_VAL' AS TRIGGER_VAL," & @CRLF & _ " DLYTRN.DLYTRN_ID AS TRANSACTION_ID," & @CRLF & _ " DLYTRN.TRNDTE AS TRANSACTION_DATE," & @CRLF & _ " DLYTRN.OPRCOD AS OPERATION_CODE," & @CRLF & _ " DLYTRN.ACTCOD AS ACTIVITY_CODE," & @CRLF & _ " DLYTRN.LODNUM AS LOAD_NUMBER," & @CRLF & _ " DLYTRN.SUBNUM AS SUB_NUMBER," & @CRLF & _ " DLYTRN.DTLNUM AS DETAIL_NUMBER," & @CRLF & _ " DLYTRN.TO_LODNUM AS TO_LOAD_NUMBER," & @CRLF & _ " DLYTRN.TO_SUBNUM AS TO_SUB_NUMBER," & @CRLF & _ " DLYTRN.TO_DTLNUM AS TO_DETAIL_NUMBER," & @CRLF & _ " DLYTRN.PRTNUM AS ITEM_NUMBER," & @CRLF & _ " DLYTRN.PRT_CLIENT_ID AS PART_CLIENT_CODE," & @CRLF & _ " DLYTRN.ORGCOD AS ORIGIN_CODE," & @CRLF & _ " DLYTRN.REVLVL AS REVISION_LEVEL," & @CRLF & _ " DLYTRN.LOTNUM AS LOT_NUMBER," & @CRLF & _ " DLYTRN.SUPNUM AS SUPPLIER_NUMBER," & @CRLF & _ " DLYTRN.MOVREF AS MOVE_REFERENCE," & @CRLF & _ " DLYTRN.REACOD AS REASON_CODE," & @CRLF & _ " DLYTRN.TRNQTY AS TRANSACTION_QUANTITY," & @CRLF & _ " DLYTRN.FR_ARECOD AS FROM_AREA," & @CRLF & _ " DLYTRN.FRSTOL AS FROM_LOCATION," & @CRLF & _ " DLYTRN.FRINVS AS FROM_INVENTORY_STATUS," & @CRLF & _ " DLYTRN.TO_ARECOD AS TO_AREA," & @CRLF & _ " DLYTRN.TOSTOL AS TO_LOCATION," & @CRLF & _ " DLYTRN.TOINVS AS TO_INVENTORY_STATUS," & @CRLF & _ " DLYTRN.TRLR_NUM AS TRAILER_NUMBER," & @CRLF & _ " DLYTRN.CARCOD AS CARRIER_CODE," & @CRLF & _ " DLYTRN.SHIP_ID AS SHIPMENT_IDENTIFIER," & @CRLF & _ " DLYTRN.CLIENT_ID AS CLIENT_CODE," & @CRLF & _ " DLYTRN.ORDNUM AS ORDER_NUMBER," & @CRLF & _ " DLYTRN.ADJ_REF1 AS ADJUSTMENT_REFERENCE1," & @CRLF & _ " DLYTRN.ADJ_REF2 AS ADJUSTMENT_REFERENCE2," & @CRLF & _ " DLYTRN.USR_ID AS USER_NAME," & @CRLF & _ " DLYTRN.DEVCOD AS DEVICE_CODE," & @CRLF & _ " DLYTRN.ASSET_TYP AS ASSET_TYPE," & @CRLF & _ " DLYTRN.ASSET_ID AS ASSET_IDENTIFIER," & @CRLF & _ " DLYTRN.ASSET_STAT AS ASSET_STATUS," & @CRLF & _ " DLYTRN.WH_ID AS WAREHOUSE_CODE," & @CRLF & _ " DLYTRN.UOMCOD AS UNIT_OF_MEASURE," & @CRLF & _ " DLYTRN.FTPCOD AS FOOTPRINT_CODE," & @CRLF & _ " DLYTRN.INS_DT AS INSERT_DATE," & @CRLF & _ " DLYTRN.LAST_UPD_DT AS LAST_UPDATED_DATE," & @CRLF & _ " DLYTRN.INS_USER_ID AS INSERT_USER_ID," & @CRLF & _ " DLYTRN.LAST_UPD_USER_ID AS LAST_UPDATED_USER_ID," & @CRLF & _ " PRTMST.PRTFAM AS PART_FAMILY," & @CRLF & _ " prtftp_view.ftpcod AS FOOTPRINT_CODE," & @CRLF & _ " prtftp_view.untcas AS UNITS_PER_CASE," & @CRLF & _ " prtftp_view.untpak AS UNITS_PER_PACK," & @CRLF & _ " prtftp_view.untpal AS UNITS_PER_PALLET," & @CRLF & _ " prtftp_view.paluom AS PALLET_UOM," & @CRLF & _ " prtftp_view.casuom AS CASE_UOM," & @CRLF & _ " prtftp_view.rcvuom AS RECEIVE_UOM," & @CRLF & _ " prtftp_view.pallen AS PALLET_LENGTH," & @CRLF & _ " prtftp_view.palhgt AS PALLET_HEIGHT," & @CRLF & _ " prtftp_view.palwid AS PALLET_WIDTH," & @CRLF & _ " prtftp_view.caslen AS CASE_LENGTH," & @CRLF & _ " prtftp_view.cashgt AS CASE_HEIGHT," & @CRLF & _ " prtftp_view.caswid AS CASE_WIDTH," & @CRLF & _ " prtftp_view.untlen AS UNIT_LENGTH," & @CRLF & _ " prtftp_view.unthgt AS UNIT_HEIGHT," & @CRLF & _ " prtftp_view.untwid AS UNIT_WIDTH," & @CRLF & _ " prtftp_view.grswgt AS UOM_GROSS_WEIGHT," & @CRLF & _ " prtftp_view.netwgt AS UOM_NET_WEIGHT," & @CRLF & _ " prtftp_view.caslvl AS CASE_PER_LEVEL," & @CRLF & _ " aremst1.sigflg AS FROM_AREA_SIGNIFICANT_FLAG," & @CRLF & _ " aremst1.fwiflg AS FROM_AREA_FOUR_WALL_INV_FLAG," & @CRLF & _ " aremst1.pckcod AS FROM_AREA_PICK_CODE," & @CRLF & _ " aremst1.bldg_id AS FROM_AREA_BUILDING_ID," & @CRLF & _ " aremst1.praflg AS FROM_AREA_PROCESSING_FLAG," & @CRLF & _ " aremst1.expflg AS FROM_AREA_EXPECTED_RECEIPT_FLAG," & @CRLF & _ " aremst1.rcv_dck_flg AS FROM_AREA_RECEIVE_DOCK_FLAG," & @CRLF & _ " aremst1.adjflg AS FROM_AREA_ADJUSTMENTS_FLAG," & @CRLF & _ " aremst1.cntflg AS FROM_AREA_COUNTABLE_FLAG," & @CRLF & _ " aremst1.wipflg AS FROM_AREA_WORK_IN_PROCESS_FLAG," & @CRLF & _ " aremst1.xdaflg AS FROM_AREA_CROSS_DOCK_FLAG," & @CRLF & _ " aremst2.sigflg AS TO_AREA_SIGNIFICANT_FLAG," & @CRLF & _ " aremst2.fwiflg AS TO_AREA_FOUR_WALL_INV_FLAG," & @CRLF & _ " aremst2.pckcod AS TO_AREA_PICK_CODE," & @CRLF & _ " aremst2.bldg_id AS TO_AREA_BUILDING_ID," & @CRLF & _ " aremst2.praflg AS TO_AREA_PROCESSING_FLAG," & @CRLF & _ " aremst2.expflg AS TO_AREA_EXPECTED_RECEIPT_FLAG," & @CRLF & _ " aremst2.rcv_dck_flg AS TO_AREA_FROM_AREA_RECEIVE_DOCK_FLAG," & @CRLF & _ " aremst2.adjflg AS TO_AREA_ADJUSTMENTS_FLAG," & @CRLF & _ " aremst2.cntflg AS TO_AREA_COUNTABLE_FLAG," & @CRLF & _ " aremst2.wipflg AS TO_AREA_WORK_IN_PROCESS_FLAG," & @CRLF & _ " aremst2.xdaflg AS TO_AREA_CROSS_DOCK_FLAG," & @CRLF & _ " locmst1.repflg AS FROM_LOCATION_REPLENISHMENT_FLAG," & @CRLF & _ " locmst1.useflg AS FROM_LOCATION_USEABLE_FLAG," & @CRLF & _ " locmst1.stoflg AS FROM_LOCATION_STORABLE_FLAG," & @CRLF & _ " locmst1.pckflg AS FROM_LOCATION_PICKABLE_FLAG," & @CRLF & _ " locmst1.trvseq AS FROM_LOCATION_TRAVEL_SEQUENCE," & @CRLF & _ " locmst2.repflg AS TO_LOCATION_REPLENISHMENT_FLAG," & @CRLF & _ " locmst2.useflg AS TO_LOCATION_USEABLE_FLAG," & @CRLF & _ " locmst2.stoflg AS TO_LOCATION_STORABLE_FLAG," & @CRLF & _ " locmst2.pckflg AS TO_LOCATION_PICKABLE_FLAG," & @CRLF & _ " locmst2.trvseq AS TO_LOCATION_TRAVEL_SEQUENCE," & @CRLF & _ " DLYTRN.WH_ID AS FACILITY_TZ," & @CRLF & _ " NULL AS POLL_NAME" & @CRLF & _ "FROM dlytrn dlytrn WITH (NOLOCK)" & @CRLF & _ " LEFT OUTER JOIN prtmst prtmst WITH (NOLOCK)" & @CRLF & _ " ON dlytrn.prtnum = prtmst.prtnum" & @CRLF & _ " AND dlytrn.prt_client_id = prtmst.prt_client_id" & @CRLF & _ " AND dlytrn.wh_id = prtmst.wh_id_tmpl" & @CRLF & _ " LEFT OUTER JOIN prtftp_view prtftp_view WITH (NOLOCK)" & @CRLF & _ " ON prtftp_view.prtnum = prtmst.prtnum" & @CRLF & _ " AND prtftp_view.prt_client_id = prtmst.prt_client_id" & @CRLF & _ " AND prtftp_view.wh_id = prtmst.wh_id_tmpl" & @CRLF & _ " AND prtftp_view.ftpcod = ISNULL(dlytrn.ftpcod, prtftp_view.ftpcod)" & @CRLF & _ " AND prtftp_view.defftp_flg = (CASE" & @CRLF & _ " WHEN dlytrn.ftpcod IS NULL THEN 1" & @CRLF & _ " ELSE prtftp_view.defftp_flg" & @CRLF & _ " END)" & @CRLF & _ " LEFT OUTER JOIN aremst aremst1 WITH (NOLOCK)" & @CRLF & _ " ON aremst1.arecod = dlytrn.fr_arecod" & @CRLF & _ " AND aremst1.wh_id = dlytrn.wh_id" & @CRLF & _ " LEFT OUTER JOIN aremst aremst2 WITH (NOLOCK)" & @CRLF & _ " ON dlytrn.to_arecod = aremst2.arecod" & @CRLF & _ " AND aremst2.wh_id = dlytrn.wh_id" & @CRLF & _ " LEFT OUTER JOIN locmst locmst1 WITH (NOLOCK)" & @CRLF & _ " ON dlytrn.frstol = locmst1.stoloc" & @CRLF & _ " AND locmst1.arecod = dlytrn.fr_arecod" & @CRLF & _ " AND locmst1.wh_id = dlytrn.wh_id" & @CRLF & _ " LEFT OUTER JOIN locmst locmst2 WITH (NOLOCK)" & @CRLF & _ " ON dlytrn.tostol = locmst2.stoloc" & @CRLF & _ " AND locmst2.arecod = dlytrn.TO_ARECOD" & @CRLF & _ " AND locmst2.wh_id = dlytrn.wh_id" & @CRLF & _ "WHERE dlytrn.actcod NOT IN ('SLCHG', 'OLCHG', 'SLNEW', 'OLNEW', 'SCHG', 'OLDEL', 'SLDEL', 'OCHG')" & @CRLF & _ " AND dlytrn.trndte >=" & @CRLF & _ " CAST('&YEAR' + '-' + '&MONTH' + '-' + '&BEG_DAY' + ' ' + '&BEG_HOUR' + ':00' + ':00.000' AS DATETIME)" & @CRLF & _ " AND dlytrn.trndte <=" & @CRLF & _ " CAST('&YEAR' + '-' + '&MONTH' + '-' + '&END_DAY' + ' ' + '&END_HOUR' + ':59' + ':59.998' AS DATETIME)" & @CRLF & _ "UNION ALL" & @CRLF & _ "SELECT '&TRIGGER_VAL' AS TRIGGER_VAL," & @CRLF & _ " NULL AS TRANSACTION_ID," & @CRLF & _ " NULL AS TRANSACTION_DATE," & @CRLF & _ " NULL AS OPERATION_CODE," & @CRLF & _ " NULL AS ACTIVITY_CODE," & @CRLF & _ " NULL AS LOAD_NUMBER," & @CRLF & _ " NULL AS SUB_NUMBER," & @CRLF & _ " NULL AS DETAIL_NUMBER," & @CRLF & _ " NULL AS TO_LOAD_NUMBER," & @CRLF & _ " NULL AS TO_SUB_NUMBER," & @CRLF & _ " NULL AS TO_DETAIL_NUMBER," & @CRLF & _ " NULL AS ITEM_NUMBER," & @CRLF & _ " NULL AS PART_CLIENT_CODE," & @CRLF & _ " NULL AS ORIGIN_CODE," & @CRLF & _ " NULL AS REVISION_LEVEL," & @CRLF & _ " NULL AS LOT_NUMBER," & @CRLF & _ " NULL AS SUPPLIER_NUMBER," & @CRLF & _ " NULL AS MOVE_REFERENCE," & @CRLF & _ " NULL AS REASON_CODE," & @CRLF & _ " NULL AS TRANSACTION_QUANTITY," & @CRLF & _ " NULL AS FROM_AREA," & @CRLF & _ " NULL AS FROM_LOCATION," & @CRLF & _ " NULL AS FROM_INVENTORY_STATUS," & @CRLF & _ " NULL AS TO_AREA," & @CRLF & _ " NULL AS TO_LOCATION," & @CRLF & _ " NULL AS TO_INVENTORY_STATUS," & @CRLF & _ " NULL AS TRAILER_NUMBER," & @CRLF & _ " NULL AS CARRIER_CODE," & @CRLF & _ " NULL AS SHIPMENT_IDENTIFIER," & @CRLF & _ " NULL AS CLIENT_CODE," & @CRLF & _ " NULL AS ORDER_NUMBER," & @CRLF & _ " NULL AS ADJUSTMENT_REFERENCE1," & @CRLF & _ " NULL AS ADJUSTMENT_REFERENCE2," & @CRLF & _ " NULL AS USER_NAME," & @CRLF & _ " NULL AS DEVICE_CODE," & @CRLF & _ " NULL AS ASSET_TYPE," & @CRLF & _ " NULL AS ASSET_IDENTIFIER," & @CRLF & _ " NULL AS ASSET_STATUS," & @CRLF & _ " NULL AS WAREHOUSE_CODE," & @CRLF & _ " NULL AS UNIT_OF_MEASURE," & @CRLF & _ " NULL AS FOOTPRINT_CODE," & @CRLF & _ " NULL AS INSERT_DATE," & @CRLF & _ " NULL AS LAST_UPDATED_DATE," & @CRLF & _ " NULL AS INSERT_USER_ID," & @CRLF & _ " NULL AS LAST_UPDATED_USER_ID," & @CRLF & _ " NULL AS PART_FAMILY," & @CRLF & _ " NULL AS FOOTPRINT_CODE," & @CRLF & _ " NULL AS UNITS_PER_CASE," & @CRLF & _ " NULL AS UNITS_PER_PACK," & @CRLF & _ " NULL AS UNITS_PER_PALLET," & @CRLF & _ " NULL AS PALLET_UOM," & @CRLF & _ " NULL AS CASE_UOM," & @CRLF & _ " NULL AS RECEIVE_UOM," & @CRLF & _ " NULL AS PALLET_LENGTH," & @CRLF & _ " NULL AS PALLET_HEIGHT," & @CRLF & _ " NULL AS PALLET_WIDTH," & @CRLF & _ " NULL AS CASE_LENGTH," & @CRLF & _ " NULL AS CASE_HEIGHT," & @CRLF & _ " NULL AS CASE_WIDTH," & @CRLF & _ " NULL AS UNIT_LENGTH," & @CRLF & _ " NULL AS UNIT_HEIGHT," & @CRLF & _ " NULL AS UNIT_WIDTH," & @CRLF & _ " NULL AS UOM_GROSS_WEIGHT," & @CRLF & _ " NULL AS UOM_NET_WEIGHT," & @CRLF & _ " NULL AS CASE_PER_LEVEL," & @CRLF & _ " NULL AS FROM_AREA_SIGNIFICANT_FLAG," & @CRLF & _ " NULL AS FROM_AREA_FOUR_WALL_INV_FLAG," & @CRLF & _ " NULL AS FROM_AREA_PICK_CODE," & @CRLF & _ " NULL AS FROM_AREA_BUILDING_ID," & @CRLF & _ " NULL AS FROM_AREA_PROCESSING_FLAG," & @CRLF & _ " NULL AS FROM_AREA_EXPECTED_RECEIPT_FLAG," & @CRLF & _ " NULL AS FROM_AREA_RECEIVE_DOCK_FLAG," & @CRLF & _ " NULL AS FROM_AREA_ADJUSTMENTS_FLAG," & @CRLF & _ " NULL AS FROM_AREA_COUNTABLE_FLAG," & @CRLF & _ " NULL AS FROM_AREA_WORK_IN_PROCESS_FLAG," & @CRLF & _ " NULL AS FROM_AREA_CROSS_DOCK_FLAG," & @CRLF & _ " NULL AS TO_AREA_SIGNIFICANT_FLAG," & @CRLF & _ " NULL AS TO_AREA_FOUR_WALL_INV_FLAG," & @CRLF & _ " NULL AS TO_AREA_PICK_CODE," & @CRLF & _ " NULL AS TO_AREA_BUILDING_ID," & @CRLF & _ " NULL AS TO_AREA_PROCESSING_FLAG," & @CRLF & _ " NULL AS TO_AREA_EXPECTED_RECEIPT_FLAG," & @CRLF & _ " NULL AS TO_AREA_FROM_AREA_RECEIVE_DOCK_FLAG," & @CRLF & _ " NULL AS TO_AREA_ADJUSTMENTS_FLAG," & @CRLF & _ " NULL AS TO_AREA_COUNTABLE_FLAG," & @CRLF & _ " NULL AS TO_AREA_WORK_IN_PROCESS_FLAG," & @CRLF & _ " NULL AS TO_AREA_CROSS_DOCK_FLAG," & @CRLF & _ " NULL AS FROM_LOCATION_REPLENISHMENT_FLAG," & @CRLF & _ " NULL AS FROM_LOCATION_USEABLE_FLAG," & @CRLF & _ " NULL AS FROM_LOCATION_STORABLE_FLAG," & @CRLF & _ " NULL AS FROM_LOCATION_PICKABLE_FLAG," & @CRLF & _ " NULL AS FROM_LOCATION_TRAVEL_SEQUENCE," & @CRLF & _ " NULL AS TO_LOCATION_REPLENISHMENT_FLAG," & @CRLF & _ " NULL AS TO_LOCATION_USEABLE_FLAG," & @CRLF & _ " NULL AS TO_LOCATION_STORABLE_FLAG," & @CRLF & _ " NULL AS TO_LOCATION_PICKABLE_FLAG," & @CRLF & _ " NULL AS TO_LOCATION_TRAVEL_SEQUENCE," & @CRLF & _ " NULL AS FACILITY_TZ," & @CRLF & _ " '&POLL_NAME' AS POLL_NAME" & @CRLF & _ "FROM dual" Local $sSubst = "$2" Local $sResult = StringRegExpReplace($sString, $sRegex, $sSubst) MsgBox($MB_SYSTEMMODAL, "Result", $sResult)

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 AutoIt, please visit: https://www.autoitscript.com/autoit3/docs/functions/StringRegExp.htm