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
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"(RT\S+)|((GigabitEthernet|TenGigE|Serial|POS)[\d/]+\S+)\t(\S+)|(Bundle-Ether\d\d\t\S+)" test_str = (" RTPESPO0305 Bundle-Ether60 REAL_TIME\n" "RTPESPO0305 Bundle-Ether61 REAL_TIME\n" "RTACPAE0101 GigabitEthernet0/0/0 REAL_TIME\n" "RTACPAE0102 GigabitEthernet0/0/0 REAL_TIME\n" "RTACPAE0101 GigabitEthernet0/0/1 REAL_TIME\n" "RTACPAE0102 GigabitEthernet0/0/1 REAL_TIME\n" "RTPERCE0303 GigabitEthernet0/3/0/4.1003 REAL_TIME\n" "RTECSRR0202 GigabitEthernet0/3/1/10.840 REAL_TIME\n" "RTPEBLM0104 GigabitEthernet0/3/1/6.1108 REAL_TIME\n" "RTPEBLM0104 GigabitEthernet0/3/1/6.1112 REAL_TIME\n" "RTOCCAS0101 GigabitEthernet6/0/0.850 REAL_TIME\n" "RTOCCTA0101 POS0/0/5/0 REAL_TIME\n" "RTECSRR0202 POS0/1/3/0 REAL_TIME\n" "RTACPAE0101 Serial0/3/0 REAL_TIME\n" "RTOCCAS0101 Serial1/3/2 REAL_TIME\n" "RTICSNE0102 TenGigE0/0/0/13 REAL_TIME\n" "RTICSNE0102 TenGigE0/0/0/3 REAL_TIME\n" "RTECBNU0102 TenGigE0/2/0/1 REAL_TIME\n" "RTECBNU0102 TenGigE0/3/0/1 REAL_TIME\n" "RTPESPO0303 TenGigE0/3/0/1 REAL_TIME\n" "RTPESPO0303 TenGigE0/4/0/1 REAL_TIME\n" "RTOCFLA0201 TenGigE0/4/0/5 REAL_TIME\n" "RTOCFLA0202 TenGigE0/4/0/5 REAL_TIME\n" "RTPESPO0304 TenGigE0/5/0/1 REAL_TIME\n" "RTPESPO0304 TenGigE0/6/0/0 REAL_TIME\n" "RTPESNE0103 TenGigE0/6/0/0.1771 REAL_TIME\n" "RTARSNE0101 GigabitEthernet0/3/1/10 REAL_TIME\n" "RTARSPO0301 GigabitEthernet0/3/1/12 REAL_TIME\n" "RTARSNE0101 GigabitEthernet0/3/1/3 REAL_TIME\n" "RTARSPO0301 GigabitEthernet0/3/1/3 REAL_TIME\n" "RTARSPO0301 GigabitEthernet0/3/1/5 REAL_TIME\n" "RTARSPO0301 GigabitEthernet0/3/1/6 REAL_TIME\n" "RTARSNE0101 GigabitEthernet0/3/1/8 REAL_TIME\n" "RTARSNE0101 TenGigE0/1/0/7 REAL_TIME\n" "RTARSPO0301 TenGigE0/1/0/7 REAL_TIME\n" "RTARSPO0301 GigabitEthernet0/3/1/15.10 REAL_TIME\n" "RTACPAE0101 Serial0/3/2 REAL_TIME\n") 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