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