import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^([a-zA-Z]+)\\s*\\{(.*?)\\}(?=\\n[a-zA-Z]+\\s*\\{\\n|\\Z)";
final String string = "BackdropNode {\n"
+ " inputs 0\n"
+ " name BackdropNode6\n"
+ " tile_color 0x555555ff\n"
+ " label RDN\n"
+ " note_font_size 42\n"
+ " xpos -1136\n"
+ " ypos -4272\n"
+ " bdwidth 451\n"
+ " bdheight 529\n"
+ "}\n"
+ "Write {\n"
+ " file \"\\[value project_directory]/_output_/\\[string range \\[file tail \\[value root.name]] 0 20].mov\"\n"
+ " colorspace sRGB\n"
+ " raw true\n"
+ " file_type mov\\{(.*?)\\}\n"
+ " mov64_format \"mov (QuickTime / MOV)\"\n"
+ " mov64_codec AVdh\n"
+ " mov64_dnxhd_codec_profile \"DNxHD 422 8-bit 145Mbit\"\n"
+ " mov64_dnxhr_codec_profile \"SQ 4:2:2 8-bit\"\n"
+ " mov64_pixel_format {{0} \"yuv420p\\tYCbCr 4:2:0 8-bit\"}\n"
+ " mov64_quality High\n"
+ " mov64_advanced 1\n"
+ " mov64_write_timecode true\n"
+ " mov64_gop_size 12\n"
+ " mov64_b_frames 0\n"
+ " mov64_bitrate 20000\n"
+ " mov64_bitrate_tolerance 40000000\n"
+ " mov64_quality_min 2\n"
+ " mov64_quality_max 31\n"
+ " render_order 3\n"
+ " checkHashOnRead false\n"
+ " version 132\n"
+ " in_colorspace scene_linear\n"
+ " out_colorspace scene_linear\n"
+ " name Write2\n"
+ " xpos -1025\n"
+ " ypos 2230\n"
+ "}";
final Pattern pattern = Pattern.compile(regex, Pattern.MULTILINE | Pattern.DOTALL);
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