Regular Expressions 101

Save & Share

  • Current Version: 1
  • Update Regex
    ctrl+⇧+s
  • Save new Regex
    ctrl+s
  • Add to 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"\bBYPASS(?: \d){3}\n *<VST \"VST: (?!FreeG\b)[\s\S]*?\n *>(?:\n(?! *<).*)*\n *WAK \d \d\b", flags=re.MULTILINE) test_str = ("<REAPER_PROJECT 0.1 \"6.66/win64\" 1661967203\n" " <NOTES 0 2\n" " >\n" " RIPPLE 0\n" " GROUPOVERRIDE 0 0 0\n" " AUTOXFADE 1\n" " ENVATTACH 3\n" " POOLEDENVATTACH 0\n" " MIXERUIFLAGS 11 48\n" " PEAKGAIN 1\n" " FEEDBACK 0\n" " PANLAW 1\n" " PROJOFFS 0 0 0\n" " MAXPROJLEN 0 600\n" " GRID 3199 8 1 8 1 0 0 0\n" " TIMEMODE 1 5 -1 30 0 0 -1\n" " VIDEO_CONFIG 0 0 256\n" " PANMODE 3\n" " CURSOR 0\n" " ZOOM 41.11416036604871 0 0\n" " VZOOMEX 6 0\n" " USE_REC_CFG 0\n" " RECMODE 1\n" " SMPTESYNC 0 30 100 40 1000 300 0 0 1 0 0\n" " LOOP 0\n" " LOOPGRAN 0 4\n" " RECORD_PATH \"\" \"\"\n" " <RECORD_CFG\n" " ZXZhdxgAAA==\n" " >\n" " <APPLYFX_CFG\n" " >\n" " RENDER_FILE \"\"\n" " RENDER_PATTERN \"\"\n" " RENDER_FMT 0 2 0\n" " RENDER_1X 0\n" " RENDER_RANGE 1 0 0 18 1000\n" " RENDER_RESAMPLE 3 0 1\n" " RENDER_ADDTOPROJ 0\n" " RENDER_STEMS 0\n" " RENDER_DITHER 0\n" " TIMELOCKMODE 1\n" " TEMPOENVLOCKMODE 1\n" " ITEMMIX 1\n" " DEFPITCHMODE 589824 0\n" " TAKELANE 1\n" " SAMPLERATE 44100 0 0\n" " <RENDER_CFG\n" " ZXZhdxgAAA==\n" " >\n" " LOCK 1\n" " <METRONOME 6 2\n" " VOL 0.25 0.125\n" " FREQ 800 1600 1\n" " BEATLEN 4\n" " SAMPLES \"\" \"\"\n" " PATTERN 2863311530 2863311529\n" " MULT 1\n" " >\n" " GLOBAL_AUTO -1\n" " TEMPO 120 4 4\n" " PLAYRATE 1 0 0.25 4\n" " SELECTION 0 0\n" " SELECTION2 0 0\n" " MASTERAUTOMODE 0\n" " MASTERTRACKHEIGHT 0 0\n" " MASTERPEAKCOL 16576\n" " MASTERMUTESOLO 0\n" " MASTERTRACKVIEW 0 0.6667 0.5 0.5 -1 -1 -1 0 0 0 -1 -1 0\n" " MASTERHWOUT 0 0 1 0 0 0 0 -1\n" " MASTER_NCH 2 2\n" " MASTER_VOLUME 1 0 -1 -1 1\n" " MASTER_PANMODE 3\n" " MASTER_FX 1\n" " MASTER_SEL 0\n" " <MASTERPLAYSPEEDENV\n" " EGUID {07BFCFC9-6DA0-4D9C-8821-7D1555F3F3F8}\n" " ACT 0 -1\n" " VIS 0 1 1\n" " LANEHEIGHT 0 0\n" " ARM 0\n" " DEFSHAPE 0 -1 -1\n" " >\n" " <TEMPOENVEX\n" " EGUID {9059CD91-68BB-42A7-8E08-BCDDCB3AC50B}\n" " ACT 0 -1\n" " VIS 1 0 1\n" " LANEHEIGHT 0 0\n" " ARM 0\n" " DEFSHAPE 1 -1 -1\n" " >\n" " <PROJBAY\n" " >\n" " <TRACK {6186BBDC-D455-4398-90C0-668CF17125E9}\n" " NAME DAC\n" " PEAKCOL 16576\n" " BEAT -1\n" " AUTOMODE 0\n" " VOLPAN 1 0 -1 -1 1\n" " MUTESOLO 0 0 0\n" " IPHASE 0\n" " PLAYOFFS 0 1\n" " ISBUS 0 0\n" " BUSCOMP 0 0 0 0 0\n" " SHOWINMIX 1 0.6667 0.5 1 0.5 -1 -1 -1\n" " SEL 1\n" " REC 0 0 1 0 0 0 0 0\n" " VU 2\n" " TRACKHEIGHT 0 0 0 0 0 0\n" " INQ 0 0 0 0.5 100 0 0 100\n" " NCHAN 2\n" " FX 1\n" " TRACKID {6186BBDC-D455-4398-90C0-668CF17125E9}\n" " PERF 0\n" " MIDIOUT -1\n" " MAINSEND 1 0\n" " <FXCHAIN\n" " WNDRECT 500 247 511 642\n" " SHOW 0\n" " LASTSEL 1\n" " DOCKED 0\n" " BYPASS 0 0 0\n" " <VST \"VST: Saturation Knob (Softube)\" \"Saturation Knob.dll\" 0 \"\" 1935766638<5653547361746E73617475726174696F> \"\"\n" " bnRhc+9e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAAEAAAAAAAAAAAABAA\n" " 776t3g3wrd5mZmY+AAAAPw==\n" " RGVmYXVsdABEZWZhdWx0ABAAAAA=\n" " >\n" " PRESETNAME Default\n" " FLOATPOS 0 0 0 0\n" " FXID {A9ED49E2-2CFE-4675-A539-CFA091920D52}\n" " WAK 0 0\n" " BYPASS 0 0 0\n" " <VST \"VST: FreeG (Sonalksis)\" \"Sonalksis FreeG Stereo (64 bit).dll\" 0 \"\" 1181894483<56535446724753667265656700000000> \"\"\n" " U0dyRu5e7f4CAAAAAQAAAAAAAAACAAAAAAAAAAIAAAABAAAAAAAAAAIAAAAAAAAAPAAAAAEAAAAAABAA\n" " V0oxPgAAAD8AAAAAAAAAAAAAAAAAAAA/AAAAAAAAAAAAAAAAAgAAAAIAAAAAAAAAAAAAAAAAAAAAAAAA\n" " AE5vbmUAEAAAAA==\n" " >\n" " PRESETNAME None\n" " FLOATPOS 0 0 0 0\n" " FXID {36381E0B-FD44-4B23-BA25-E9CC29920FFB}\n" " WAK 0 0\n" " >\n" " <ITEM\n" " POSITION 0\n" " SNAPOFFS 0\n" " LENGTH 14.22222222222222\n" " LOOP 1\n" " ALLTAKES 0\n" " FADEIN 1 0.01 0 1 0 0 0\n" " FADEOUT 1 0.01 0 1 0 0 0\n" " MUTE 0 0\n" " SEL 1\n" " IGUID {8FA4C4EF-ACED-4A1E-B4E0-AAAF41D8BCA4}\n" " IID 1\n" " NAME dac.wav\n" " VOLPAN 1 0 1 -1\n" " SOFFS 0\n" " PLAYRATE 1 1 0 -1 0 0.0025\n" " CHANMODE 0\n" " GUID {FD68F37C-6841-45B5-803E-83BB63FA6E98}\n" " <SOURCE WAVE\n" " FILE \"dac.wav\"\n" " >\n" " >\n" " >\n" ">") 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