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

/
/
gim

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"(?<Lot>^\d+( \w)?)\s+(?<Rep>\w{3})\s(?<State>\w{2})\s(?<Consignor>[\w\s\d,.&-\/]{1,30})\s(?<Head>\d{1,4}(\/\d{1,4})?)\s+(?<Kind>[a-z\s,.&\/]{1,30})\s(?<Wt>\d{1,4}(\/\d{1,4})?)\s+(?<StartDate>\d?\d\/\d?\d\/(\d\d)?\d\d)\s(?<EndDate>\d?\d\/\d?\d\/(\d\d)?\d\d)\s+(?<Price>\$?\d+,?\d+\.\d+)\n" test_str = (" WESTERN VIDEO MARKET - PRICE REPORT - June 7th, 2018\n\n" "LOT REP CONSIGNOR HEAD COUNT WT SHIP DATE PRICE\n" "101 SLA OR CRUMP RANCH - ED STABB 46 Bred Heifers 1050 1/11/2008 1/18/2008 1,110.00\n" "102 SLA NV CRAIG & JEAN SPRATLING 52 Bred Heifers 970 1/15/2008 1/25/2008 1,050.00\n" "102 1 SLA OR MRS. BLAINE ALLEN 100 Bred Heifers 1000 1/10/2008 1/15/2008 $950.00\n\n\n" "LOT REP CONSIGNOR HEAD COUNT WT SHIP DATE PRICE\n" "102 1 SLA OR MRS. BLAINE ALLEN 100 Bred Heifers 1000 1/10/2008 1/15/2008 $950.00\n\n" "7049 1 OLA NE RUNDBACK & MUELLER 350 Spayed Heifers 880 8/25/2010 9/5/2010 $103.75\n" "7049 2 OLA NE RUNDBACK & MUELLER 175 Spayed Heifers 880 8/25/2010 9/5/2010 $103.25\n" "7049 3 OLA NE RUNDBACK & MUELLER 400 Spayed Heifers 880 8/25/2010 9/5/2010 $103.00\n\n" "301 SLA NV S.A.S. 90 Holst. Steers 590 2/3/2009 2/10/2009 $57.75\n" "302 SLA OR KETSCHER CATTLE CO. 55/55 Weaned Steers/W 450/450 2/1/2009 2/10/2009 $116.00\n" "303 SLA OR MAYNARD ALVES 115 Weaned Steers 400 2/8/2009 2/12/2009 $115.00\n\n" "6001 TSM CA WORK RANCH 55/50 Weaned Steers/W 450/450 06/10/18 06/25/18 $170.50 $155.00\n" "6002 TSM CA BOSTON RANCH 78 Weaned Steers 625 06/20/18 06/30/18 $172.00\n" "6003 TSM CA FLYNN CATTLE CO. 168 Heifer Calves 585 06/18/18 06/25/18 $161.00\n" "6003 A TSM CA RIGHETTI RANCH CO. 40/46 Steer Calves/Heife 560/560 06/12/18 06/22/18 $164.00 $152.00\n" "6003 B TSM CA BLAKE CATTLE CO. 45/50 Steers/Heifers 500/525 06/10/18 06/15/18 $159.50 $141.50\n" "6004 SLA CA ANTELOPE CREEK CATTLE 80 Heifer Calves 615 06/08/18 06/15/18 $157.00\n" "6005 SLA CA ANTELOPE CREEK CATTLE 60/20 Heifer Calves/Stee 615/615 06/08/18 06/15/18 $158.00 $172.00\n" "6006 SLA CA BILL & D.C. DONATI 45/35 Steer Calves/Heife 660/600 06/11/18 06/11/18 $155.00 $143.00\n" "6007 HAY CA LONE PINE RANCH 74 Steer Calves 665 06/20/18 06/30/18 $160.00\n" "6008 HAY CA LONE PINE RANCH 126 Steer Calves 765 06/20/18 06/30/18 $144.00\n" "6009 HAY CA LONE PINE RANCH 152 Heifer Calves 650 07/06/18 07/16/18 $142.00\n" "6010 SLA CA ANTELOPE CREEK CATTLE 75 Steer Calves 650 06/08/18 06/15/18 $163.00\n" "6011 SLA CA ANTELOPE CREEK CATTLE 67 Steer Calves 735 06/08/18 06/15/18 $147.50\n" "6012 SLA CA ANTELOPE CREEK CATTLE 64 Steer Calves 775 06/08/18 06/15/18 $143.50\n" "6013 SLA CA ANTELOPE CREEK CATTLE 60 Steer Calves 835 06/08/18 06/15/18 $138.00\n" "6014 SLA CA JOHN TISCORNIA 200/100 Steer Calves/Heife 835/760 06/17/18 06/18/18 $133.00 $125.00\n" "6015 SLA CA SL CATTLE CO. 65 Steer Calves 745 06/15/18 06/30/18 $161.00\n" "6016 SLA CA SL CATTLE CO. 60 Steer Calves 790 06/15/18 06/30/18 $142.50\n" "6016 A TSM CA MARETTI & MINETTI RANCH 150 Steer Calves 675 06/25/18 06/25/18 $154.00\n" "6016 B TSM CA RIGHETTI RANCH CO. 72 Steer Calves 675 06/12/18 06/22/18 $150.50\n" "6017 SLA CA GILLILAND LIVESTOCK INC. 240 Weaned Steers 695 06/14/18 06/20/18 $162.00\n" "6018 SLA CA GILLILAND LIVESTOCK INC. 68 Weaned Heifers 750 06/14/18 06/20/18 $143.50\n" "6019 SLA CA ROBBEN RANCH 280 Weaned Steers 710 06/11/18 06/15/18 $165.00\n" "6020 SLA CA ROBBEN RANCH 180 Weaned Steers 795 06/11/18 06/15/18 $154.75\n" "6021 SLA CA SHAWN BOURDET 200 Weaned Steers 715 07/02/18 07/02/18 $154.00\n" "6022 SLA CA SHAWN BOURDET 74 Weaned Heifers 650 06/27/18 06/27/18 $143.50\n" "6023 SLA CA TERRY ZIMMERMAN 70 Weaned Heifers 710 06/28/18 07/02/18 $138.00\n" "6024 SLA CA DRAYER TRUST 71 Weaned Steers 725 07/01/18 07/06/18 $139.50\n" "6024 A TSM CA CAL POLY RANCHES 73 Weaned Steers 675 06/09/18 06/12/18 $150.00\n" "6025 SLA CA JP RANCHES 136 Weaned Steers 725 06/10/18 06/19/18 $150.00\n" "6026 SLA CA JP RANCHES 75 Weaned Heifers 635 06/10/18 06/19/18 $150.00\n" "6027 SLA CA CHARLIE & BECKY DEFORE 62 Weaned Steers 780 06/10/18 06/15/18 $140.00\n" "6028 TSM CA MF CATTLE/TOM & TINA FAN 45/25 Weaned Steers/W 760/710 06/10/18 06/25/18 $140.00 $125.00\n" "6028 A TSM CA BLAKE CATTLE CO. 74 Steers 650 06/10/18 06/15/18 $153.00\n" "6029 SLA CA ROBBEN RANCH 72 Steers 725 06/11/18 06/15/18 $143.00\n" "6030 SLA CA ROBBEN RANCH 280 Heifers 700 06/11/18 06/15/18 $132.00\n" "6031 SLA CA DAVID & BECKY GIBB 65 Heifers 725 06/08/18 06/15/18 $136.50\n" "6032 SLA CA GILLILAND LIVESTOCK INC. 300 Steers 825 06/11/18 06/16/18 $138.00\n" "6033 SLA CA CHARLIE & BECKY DEFORE 56 Weaned Steers 875 06/10/18 06/15/18 $132.00\n" "6034 SLA CA TOM & TERRY BENGARD 120 Steers 850 06/18/18 06/23/18 $156.50\n" "6035 SLA CA TOM & TERRY BENGARD 112 Steers 860 06/18/18 06/23/18 $156.00\n" "6036 SLA NV JSM LIVESTOCK MGMNT LL 360 Steers 800 06/20/18 06/30/18 $135.50\n" "6037 SLA NV HENDRIX RANCH 75 Steers 835 06/11/18 06/15/18 $134.00\n" "6038 SLA CA BILL & D.C. DONATI 93 Steers 875 06/10/18 06/10/18 $127.00\n" "6038 A SLA CA LUCKY 7 RANCH 55 Steers 890 06/09/18 06/09/18 $131.00\n" "6039 SLA OR FLYNN & SONS dba FLYNN & 102 Steers 925 06/11/18 06/14/18 $151.00\n" "6040 SLA OR FLYNN & SONS dba FLYNN & 51 Steers 925 06/11/18 06/14/18 $150.00\n" "6040 A SLA CA A.N. HUNT & SONS 110 Steers 880 06/15/18 06/30/18 $131.00\n" "6041 SLA CA A.N. HUNT & SONS 240 Heifers 830 06/15/18 06/30/18 $125.25\n" "6042 TSM OR PARSNIP PEAK CATTLE CO. 58 Heifers 840 06/08/18 06/12/18 $129.85\n" "6042 A TSM CA EL DORADO 280 Steers 875 06/11/18 06/18/18 $133.00\n" "6042 B TSM CA EL DORADO 165 Steers 875 06/11/18 06/13/18 $131.50\n" "6042 C TSM CA EL DORADO 240 Heifers 835 06/18/18 06/22/18 $129.00\n" "6042 D TSM CA EL DORADO 320 Heifers 875 06/11/18 06/16/18 $126.75\n" "6042 E TSM CA EL DORADO 150 Steers 985 06/11/18 06/13/18 $122.00\n" " Page 1") matches = re.finditer(regex, test_str, re.IGNORECASE | re.MULTILINE) 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