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

/
/
ig

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"\s+TRN\s+[a-z\d]+\s+\d+\s+(\s+\d+\s+)\w+(\s+\d{2}\w{3}\s+)\d\s([a-z]{5})\s+([a-z]{5})\s[a-z\d]+\s+[\D]+(\d{4}|\d{0})\s+(\d{4}|\d{0})" test_str = ("4 TRN 2C 87 6628 AF 26NOV 4 FRLPD FRPLY HK1 1800 2007 \n" "3 TRN 2C 87 5266 BI 16NOV 1 FRBOJ FRMLV HK PAST 3333 3333*\n" "4 TRN 2C 87 5454 BI 19NOV 4 FRMLV FRBOJ HK PAST *\n" "3 TRN 2C 87 5266 BI 16NOV 1 FRBOJ FRMLV HK PAST *\n" "4 TRN 2C 87 5454 BI 19NOV 4 FRMLV FRBOJ HK PAST *\n" "3 TRN 2C 87 6609 AF 23NOV 1 FRPLY FRLPD HK PAST *\n" "4 TRN 2C 87 6628 AF 26NOV 4 FRLPD FRPLY HK1 1800 2007\n" "3 TRN 2C 87 6817 AF 25NOV 3 FRLPD FRBZR HK1 1810 2047\n" " FRLPD/LYON PART DIEU//FRBZR/BEZIERS /TGD *\n" "4 TRN 2C 87 6860 AF 27NOV 5 FRBZR FRLPD HK1 1618 1850\n" " FRBZR/BEZIERS//FRLPD/LYON PART DIEU /TGD *\n" "3 TRN 2C 87 6201 BF 23NOV 1 FRPLY FRVLA HK PAST *\n" "4 TRN 2C 87 6194 BF 24NOV 2 FRVAF FRPLY HK1 0843 1110\n" " FRVAF/VALENCE VILLE//FRPLY/PARIS GARE LYON /TGD *\n" "3 TRN 2C 87 3101 B 24NOV 2 FRPSL FRAEZ HK1 0653 0903\n" " FRPSL/PARIS ST LAZARE//FRAEZ/LE HAVRE /TIB *\n" "4 TRN 2C 87 3130 A 25NOV 3 FRAEZ FRPSL HK1 1757 2010\n" " FRAEZ/LE HAVRE//FRPSL/PARIS ST LAZARE /TIB *\n" "3 TRN 2C 87 6700 BF 26NOV 4 FRAEK FRPLY HK1 0542 0837\n" " FRAEK/MULHOUSE VILLE//FRPLY/PARIS GARE LYON /TGD *\n" "4 TRN 2C 87 9223 BF 27NOV 5 FRPLY FRAEK HK1 1823 2103\n" " FRPLY/PARIS GARE LYON//FRAEK/MULHOUSE VILLE /TGL *\n" "3 TRN 2C 87 5352 BF 26NOV 4 FRLPD FRDJU HK1 0629 0835\n" " FRLPD/LYON PART DIEU//FRDJU/MASSY TGV /TGD *\n" "4 TRN 2C 87 5233 BF 26NOV 4 FRDJU FRRNS HK1 1538 1747\n" " FRDJU/MASSY TGV//FRRNS/RENNES /TGA *\n" "5 TRN 2C 87 5346 BF 27NOV 5 FRRNS FRLPD HK1 1609 2030\n" " FRRNS/RENNES//FRLPD/LYON PART DIEU /TGD *\n" "3 TRN 2C 87 6602 BF 30NOV 1 FRLPD FRPLY HK1 0602 0813\n" " FRLPD/LYON PART DIEU//FRPLY/PARIS GARE LYON /TGD *\n" "4 TRN 2C 87 6629 BF 04DEC 5 FRPLY FRLPD HK1 1857 2057\n" " FRPLY/PARIS GARE LYON//FRLPD/LYON PART DIEU /TGD") 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