import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^label (\\S+)(?!.*(?:\\n(?!label).*)*?\\n[ \\t]*\\[end_timeline\\])";
final String string = "label Colorcode (Object)\n"
+ "Dialog\n"
+ "Speaker: \"Text\"\n"
+ "Speaker 2: \"[i]Text[/i]! [pause={pause.medium}] more text.\"\n"
+ "do function_name(\"parameter\", {parameter})\n"
+ "# comment, there are no inline-comments\n"
+ "[end_timeline]\n\n"
+ "label Maroon (Guitar)\n"
+ "Speaker: \"Text\"\n"
+ "[end_timeline]\n\n"
+ "label Pink (Chest)\n"
+ "Speaker: \"Text\"\n\n"
+ "label Königsblau (Wardrobe)\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"\n"
+ "[end_timeline]\n\n"
+ "label Azur (Sorcerers Hat)\n"
+ "Speaker: \"Text\"\n"
+ "# [end_timeline]\n\n"
+ "label Jade (Paintings)\n"
+ "Speaker: \"Text\"\n"
+ "label Gras (Ship in a Bottle)\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"\n"
+ "[end_timeline]\n\n"
+ "label Goldgelb (Golden Apple)\n"
+ "Speaker: \"Text\"\n"
+ "[end_timeline]\n\n"
+ "label Himmelblau (Helmet)\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"\n"
+ "Speaker: \"Text\"";
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