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
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
Processing...

Test String

Code Generator

Generated Code

import re regex = re.compile(r""" (?(DEFINE) # Note that everything is atomic, JSON does not need backtracking if it's valid # and this prevents catastrophic backtracking (?<json>(?>\s*(?&object)\s*|\s*(?&array)\s*)) (?<object>(?>\{\s*(?>(?&pair)(?>\s*,\s*(?&pair))*)?\s*\})) (?<pair>(?>(?&STRING)\s*:\s*(?&value))) (?<array>(?>\[\s*(?>(?&value)(?>\s*,\s*(?&value))*)?\s*\])) (?<value>(?>true|false|null|(?&STRING)|(?&NUMBER)|(?&object)|(?&array))) (?<STRING>(?>"(?>\\(?>["\\\/bfnrt]|u[a-fA-F0-9]{4})|[^"\\\0-\x1F\x7F]+)*")) (?<NUMBER>(?>-?(?>0|[1-9][0-9]*)(?>\.[0-9]+)?(?>[eE][+-]?[0-9]+)?)) ) \A(?&json)\z """, flags=re.VERBOSE) test_str = ("[\n" " \"JSON Test Pattern pass1\",\n" " {\"object with 1 member\":[\"array with 1 element\"]},\n" " {},\n" " [],\n" " -42,\n" " true,\n" " false,\n" " null,\n" " {\n" " \"integer\": 1234567890,\n" " \"real\": -9876.543210,\n" " \"e\": 0.123456789e-12,\n" " \"E\": 1.234567890E+34,\n" " \"\": 23456789012E66,\n" " \"zero\": 0,\n" " \"one\": 1,\n" " \"space\": \" \",\n" " \"quote\": \"\\\"\",\n" " \"backslash\": \"\\\\\",\n" " \"controls\": \"\\b\\f\\n\\r\\t\",\n" " \"slash\": \"/ & \\/\",\n" " \"alpha\": \"abcdefghijklmnopqrstuvwyz\",\n" " \"ALPHA\": \"ABCDEFGHIJKLMNOPQRSTUVWYZ\",\n" " \"digit\": \"0123456789\",\n" " \"0123456789\": \"digit\",\n" " \"special\": \"`1~!@#$%^&*()_+-={':[,]}|;.</>?\",\n" " \"hex\": \"\\u0123\\u4567\\u89AB\\uCDEF\\uabcd\\uef4A\",\n" " \"true\": true,\n" " \"false\": false,\n" " \"null\": null,\n" " \"array\":[ ],\n" " \"object\":{ },\n" " \"address\": \"50 St. James Street\",\n" " \"url\": \"http://www.JSON.org/\",\n" " \"comment\": \"// /* <!-- --\",\n" " \"# -- --> */\": \" \",\n" " \" s p a c e d \" :[1,2 , 3\n\n" ",\n\n" "4 , 5 , 6 ,7 ],\"compact\":[1,2,3,4,5,6,7],\n" " \"jsontext\": \"{\\\"object with 1 member\\\":[\\\"array with 1 element\\\"]}\",\n" " \"quotes\": \"&#34; \\u0022 %22 0x22 034 &#x22;\",\n" " \"\\/\\\\\\\"\\uCAFE\\uBABE\\uAB98\\uFCDE\\ubcda\\uef4A\\b\\f\\n\\r\\t`1~!@#$%^&*()_+-=[]{}|;:',./<>?\"\n" ": \"A key can be any string\"\n" " },\n" " 0.5 ,98.6\n" ",\n" "99.44\n" ",\n\n" "1066,\n" "1e1,\n" "0.1e1,\n" "1e-1,\n" "1e00,2e+00,2e-00\n" ",\"rosebud\"]") match = regex.search(test_str) if match: print(f"Match 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