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

/
/
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"\[(?<id>\w)]\s*(?!\[\w])(?<content>.+)" test_str = ("[I]LK0001\n" "[Q]我国现行法律体系中专门针对无线电管理的最高法律文件及其立法机关是:\n" "[A]中华人民共和国无线电管理条例,国务院和中央军委\n" "[B]中华人民共和国无线电管理办法,工业和信息化部\n" "[C]中华人民共和国电信条例,国务院\n" "[D]中华人民共和国业余无线电台管理办法,工业和信息化部\n" "[P]LK0001.jpg\n\n" "[I]LK0146\n" "[Q][Q]我国在VHF和UHF范围内分配给业余业务和卫星业余业务与其他业务共用并设业务类别为主要业务与次要业务,以下那些频率分配给业余业务和卫星业余业务与其他业务共用并且业余业务和卫星业余业务作为主要业务: \n" "[A]50MHz、144MHz\n" "[B]144MHz、430MHz\n" "[C]50MHz、430MHz\n" "[D]220MHz、430MHz\n" "[P]\n\n" "[I]LK0110\n" "[Q]业余电台违反无线电管制命令和无线电管制指令的,可以依法规受到下列处罚:\n" "[A] 责令改正;拒不改正的,关闭、查封、暂扣或者拆除相关设备;情节严重的,吊销电台执照;违反治安管理规定的,由公安机关处罚\n" "[B] 处警告或者三万元以下的罚款\n" "[C] 处警告或者一千元以上,五千元以下的罚款 \n" "[D] 责令改正;并开除业余无线电协会会籍、罚没无线电通信设备\n" "[P]\n\n" "[I]LK0129\n" "[Q]发射类别(class of emission)是指用标准符号标示的某发射的一组特性,例如主载波调制方式,调制信号,被发送信息的类型以及其他适用的信号特性。表示用单边带话传输的RTTY信号的发射类别是:\n" "[A]F2B\n" "[B]A1A\n" "[C]J3E\n" "[D]G2B\n" "[P]") 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