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"\s*(\d{1}\s{9})*(\r|\n|\r\n)\s*[0-9]{80}[\r|\n|\r\n]0\s*CMD\s(?<CMD>.{18})\sADJUSTMENT\sMONETARY\sSCREEN\s{8}IAJMON\s{3}PAGE\s(?<PAGECURRENT>\d)\sOF\s(?<PAGETOTAL>\d)\s*[\r|\n|\r\n]1\s{2}SCREEN\s(?<SCREEN>.{2})\s{2}ACTION\s(?<ACTION>.{2})\s{2}RA\sNUM\s(?<RANUMBER>.{10})\s*OVRD\s(?<OVRD>.{2})INVOICE\sNUM\s(?<INVOICENUM>.{15})[\r|\n|\r\n]2.*RES\sNUM\s(?<RESNUMBER>[A-Z0-9]{11})\s(?<COMPANY>\w{1})\s*[\r|\n|\r\n]3\s*CHK\sOUT\sLOC\s(?<CHECKOUTLOC>.{3})\s*DATE\s(?<CHECKOUTDATE>.{7})\s*TIME\s(?<CHECKOUTTIME>.{5})\s*MLS\/KM\s*(?<CHECKOUTMILEAGE>.{8})\s*FUEL\s(?<CHECKOUTFUEL>.{1})\s*[\r|\n|\r\n]4\s*CHK\s*IN\s*LOC\s(?<CHECKINLOCATION>.{3})\s*DATE\s(?<CHECKINDATE>.{7})\s*TIME\s(?<CHECKINTIME>.{5})\s*MLS\/KM\s(?<CHECKINMILEAGE>.{8})\s*FUEL\s(?<CHECKINFUEL>.{1})\s*[\r|\n|\r\n]5\s*AGREED\sRETURN\s(?<AGREEDRETURNLOC>[A-Z0-9]{3})\s*DATE\s(?<AGREEDRETURNDATE>.{7})\s*TIME\s(?<AGREEDRETURNTIME>.{5})\s*MLS\/KM\sDRIVEN\s(?<MILEAGEDRIVEN>.{12})[\r|\n|\r\n]6\s*WIZARD\sNUM\s(?<WIZARDNUMBER>.{7})\sAWD\sNUM\s(?<AWDNUMBER>.{8})\s") test_str = (" 0 1 2 3 4 5 6 7 \n" " 01234567890123456789012345678901234567890123456789012345678901234567890123456789\n" "0 CMD ADJUSTMENT MONETARY SCREEN IAJMON PAGE 1 OF 3 \n" "1 SCREEN 10 ACTION DS RA NUM E839020313 OVRD INVOICE NUM \n" "2 E839020313 DS RES NUM 42423337ZA5 A \n" "3 CHK OUT LOC CPT DATE 02JUL16 TIME 10:38 MLS/KM 11110700 FUEL 8 \n" "4 CHK IN LOC CPT DATE 05JUL16 TIME 15:36 MLS/KM 511 FUEL \n" "5 AGREED RETURN CPT DATE 05JUL16 TIME 16:00 MLS/KM DRIVEN 404 \n" "6 WIZARD NUM AWD NUM E0193000 METH OF PAY CLUB \n" "7 CUSTOMER NAME SMITH,NEILMR FAX NUM CD N SP/IR N \n" "8 RATE CODE YWI A HRLY 184.21 DALY 184.21 WKY 1172.81 MTH 0.00 \n" "9 UPGRADE AMT RES QUOTED PRICE 643.33 RES/RENTAL T \n" "10 DEFAULT RATE DESC \n" "11 TRAVEL AGNY ACCT AV873132130055 VOUCHER NUM E42423337 ARC/IATA 0149575L \n" "12 TRAVEL AGNY AMT 629.00 BILLING MONTH/YEAR RENT TYP RMOTE CI \n" "13 COMMISSION AMT 177.41 COMMISSION SOURCE O EQUIP TYP CAR RNTL \n" "14 AGENCY VAT TAX 0.00 TOUR VOUCHER BUY/SELL B CUST VOCH \n" "15 COMMISSION QST BUY/SELL PURCHASE/SOLD \n" "16 COMMISSION REV 806.41 RA SOLD COUNTRY INVOICE Y \n" "17 COMMISS BASIS 3 TOUR VOUCHER SOLD COUNTRY GB DB/CR NOTE Y \n" "18 ORI CHKOUT CURR 575.97 ORI CHKOUT CURR CODE SAR WRITE-OFF \n" "19 ORI BILLING CURR ORI BILLING CURR CODE \n" "20 EMPL ID PIN NUM DCC CURR DCC RATE \n" "21 71 RA HAS NO PRIOR ADJUSTMENT 143 RA HAS 1 PAYMENT(S) \n" "22 135 LICENSEE CHECKOUT/LICENSEE OWNER 235RA HAS BEEN MODIFIED AFTER CHECKOUT \n" "23 \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