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]
  • 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 java.util.regex.Matcher; import java.util.regex.Pattern; public class Example { public static void main(String[] args) { final String regex = "\\bBYPASS(?: \\d){3}\\n *<VST \"VST: (?!FreeG\\b)[\\s\\S]*?\\n *>(?:\\n(?! *<).*)*\\n *WAK \\d \\d\\b"; final String string = "<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" + ">"; final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE); final Matcher matcher = pattern.matcher(string); while (matcher.find()) { System.out.println("Full match: " + matcher.group(0)); for (int i = 1; i <= matcher.groupCount(); i++) { System.out.println("Group " + i + ": " + matcher.group(i)); } } } }

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 Java, please visit: https://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html