Regular Expressions 101

Save & Share

  • Regex Version: ver. 1
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to Community Library

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
No Match

r"
"
g

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"(?ms)^AELIST.*?(?=^[A-Z]|\Z)" test_str = ("AELIST 1 5159 5160 7007 7008 7015 7016 7023+ \n" "+ 7024 7031 7032 7039 7040 7047 7048 7055+ \n" "+ 7056 7063 7064 7071 7072 7079 7080 7087+ \n" "+ 7088 7095 7096 7103 7104 7111 7112 7119+ \n" "+ 7120 7127 7128 7135 7136 7143 7144 7151+ \n" "+ 7152 7159 7160 7167 7168 7175 7176 7183+ \n" "+ 7184 7191 7192 7199 7200 7207 7208 7215+ \n" "+ 7216 7223 7224 7231 7232 \n" "SET1 2 6159 6160 9007 9008 9015 9016 9023+ \n" "+ 9024 9031 9032 9039 9040 9047 9048 9055+ \n" "+ 9056 9063 9064 9071 9072 9079 9080 9087+ \n" "+ 9088 9095 9096 9103 9104 9111 9112 9119+ \n" "+ 9120 9127 9128 9135 9136 9143 9144 9151+ \n" "+ 9152 9159 9160 \n" "AELIST 5 11017 11018 11023 11024 11029 11030 11035+ \n" "+ 11036 11041 11042 11047 11048 11053 11054 11059+ \n" "+ 11060 11065 11066 11071 11072 11077 11078 11083+ \n" "+ 11084 11089 11090 11095 11096 11101 11102 11107+ ") matches = re.finditer(regex, test_str) 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