Regular Expressions 101

Save & Manage Regex

  • Current Version: 1
  • Save & Share
  • Community Library

Flavor

  • PCRE2 (PHP)
  • ECMAScript (JavaScript)
  • Python
  • Golang
  • Java
  • .NET 7.0 (C#)
  • Rust
  • PCRE (Legacy)
  • Regex Flavor Guide

Function

  • Match
  • Substitution
  • List
  • Unit Tests
Sponsors
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]
  • Character class intersection
    [\w&&[^\d]]
  • 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
Processing...

Test String

Code Generator

Generated Code

import re regex = re.compile(r"^-?[0-9]+$", flags=re.MULTILINE) test_str = ("0\n" "00\n" "0000000000\n" "0123456789\n" "X0123456789\n" "01234X56789\n" "0123456789X\n\n" "1\n" "11\n" "1111111111\n" "1000000000\n" "0000000001\n" "1234567890\n" "X1234567890\n" "12345X67890\n" "1234567890X\n\n" "2\n" "22\n" "2222222222\n" "2000000000\n" "0000000002\n" "2345678901\n" "X2345678901\n" "23456X78901\n" "2345678901X\n\n" "3\n" "33\n" "3333333333\n" "3000000000\n" "0000000003\n" "3456789012\n" "X3456789012\n" "34567X89012\n" "3456789012X\n\n" "4\n" "44\n" "4444444444\n" "4000000000\n" "0000000004\n" "4567890123\n" "X4567890123\n" "45678X90123\n" "4567890123X\n\n" "5\n" "55\n" "5555555555\n" "5000000000\n" "0000000005\n" "5678901234\n" "X5678901234\n" "56789X01234\n" "5678901234X\n\n" "6\n" "66\n" "6666666666\n" "6000000000\n" "0000000006\n" "6789012345\n" "X6789012345\n" "67890X12345\n" "6789012345X\n\n" "7\n" "77\n" "7777777777\n" "7000000000\n" "0000000007\n" "7890123456\n" "X7890123456\n" "78901X23456\n" "7890123456X\n\n" "8\n" "88\n" "8888888888\n" "8000000000\n" "0000000008\n" "8901234567\n" "X8901234567\n" "89012X34567\n" "8901234567X\n\n" "9\n" "99\n" "9999999999\n" "9000000000\n" "0000000009\n" "9012345678\n" "X9012345678\n" "90123X45678\n" "9012345678X\n\n" "-0\n" "-00\n" "-0000000000\n" "-0123456789\n" "-X0123456789\n" "-01234X56789\n" "-0123456789X\n\n" "-1\n" "-11\n" "-1111111111\n" "-1000000000\n" "-0000000001\n" "-1234567890\n" "-X1234567890\n" "-12345X67890\n" "-1234567890X\n\n" "-2\n" "-22\n" "-2222222222\n" "-2000000000\n" "-0000000002\n" "-2345678901\n" "-X2345678901\n" "-23456X78901\n" "-2345678901X\n\n" "-3\n" "-33\n" "-3333333333\n" "-3000000000\n" "-0000000003\n" "-3456789012\n" "-X3456789012\n" "-34567X89012\n" "-3456789012X\n\n" "-4\n" "-44\n" "-4444444444\n" "-4000000000\n" "-0000000004\n" "-4567890123\n" "-X4567890123\n" "-45678X90123\n" "-4567890123X\n\n" "-5\n" "-55\n" "-5555555555\n" "-5000000000\n" "-0000000005\n" "-5678901234\n" "-X5678901234\n" "-56789X01234\n" "-5678901234X\n\n" "-6\n" "-66\n" "-6666666666\n" "-6000000000\n" "-0000000006\n" "-6789012345\n" "-X6789012345\n" "-67890X12345\n" "-6789012345X\n\n" "-7\n" "-77\n" "-7777777777\n" "-7000000000\n" "-0000000007\n" "-7890123456\n" "-X7890123456\n" "-78901X23456\n" "-7890123456X\n\n" "-8\n" "-88\n" "-8888888888\n" "-8000000000\n" "-0000000008\n" "-8901234567\n" "-X8901234567\n" "-89012X34567\n" "-8901234567X\n\n" "-9\n" "-99\n" "-9999999999\n" "-9000000000\n" "-0000000009\n" "-9012345678\n" "-X9012345678\n" "-90123X45678\n" "-9012345678X\n\n" "X\n" "Y\n" "Z") matches = regex.finditer(test_str) for match_num, match in enumerate(matches, start=1): print(f"Match {match_num} was found at {match.start()}-{match.end()}: {match.group()}") for group_num, group in enumerate(match.groups(), start=1): print(f"Group {group_num} found at {match.start(group_num)}-{match.end(group_num)}: {group}")

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