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

/
/
gm

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"(?P<smlouva>[0-9]{10})\s(?:|(?P<flotila>[0-9]{10})\s)(?P<kod>[A-Z0-9]{3})\s(?<rc_ic>[0-9]+)\s(?<klient>\S+ \S+)\s(?P<zaklad>-?[0-9 ]+,[0-9]{2})\s(?P<od>[0-9.]+)\s(?P<do>[0-9.]+)\s(?P<zarazeni>\S+)\s(?P<provize>-?[0-9 ]+,[0-9]{2})" test_str = ("Získatelská-život\n" "Smlouva č. Flotila/pův.čps Kód RČ/IČ Klient Základ Období od. Období do. Zařazení Provize\n" "1442225650 7BN 8508142236 Šxxxx Rxxx 7 116,00 01.08.2018 01.08.2019 získatelská 10 674,00\n" "1442226302 7BN 8559150666 Paxxxxxxx Jxxx 19 800,00 01.08.2018 01.08.2019 získatelská 29 700,00\n" "1442226325 7BN 9411250057 Mxxxx Dxxxx 7 920,00 01.08.2018 01.08.2019 získatelská 11 880,00\n" "1442230798 7BN 7309170572 Kxxxxx Mxxx 6 720,00 01.08.2018 01.08.2019 získatelská 10 080,00\n" "Získatelská-neživot\n" "Smlouva č. Flotila/pův.čps Kód RČ/IČ Klient Základ Období od. Období do. Zařazení Provize\n" "3951263358 1BB 9451055141 Bxxxxxx Lxxx 860,00 17.05.2018 17.05.2019 získatelská 93,00\n" "3951291767 1BB 6852200333 Kxxxxxxx Mxxxx 1 210,00 20.07.2018 20.07.2019 získatelská 131,00\n" "3951289137 1BD 61491853 Mxxxxx HxxxxÍ 16 510,00 12.07.2018 12.07.2019 získatelská 7 925,00\n\n" "8930218318 8602948105 TR7 45798052 xxx s.r.o. / G.x.x.x., xx./ 5 950,00 04.08.2018 04.08.2019 pečovatelská 893,00\n" "8930219821 8602951021 TR7 24684911 xx Šxxxxx s.r.o. -14 455,00 03.08.2018 03.08.2019 pečovatelská -2 168,00\n\n" "3951263358 8602951021 1BB 9451055141 Bxxxxxx Lucie 860,00 17.05.2018 17.05.2019 získatelská 93,00") matches = re.finditer(regex, test_str, 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