import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "\\\\RequirePackage(\\[([^][]*)\\])?([^\\{]*)\\{([^\\{\\}]*)\\}.*(?:\\n\\s*\\[([^][]*)])?";
final String string = "\\RequirePackage[\n"
+ " top = 2.5cm,\n"
+ " bottom = 2.5cm,\n"
+ " left = 2.5cm,\n"
+ " right = 2.5cm,\n"
+ " marginparwidth = 2cm,\n"
+ " marginparsep = 2mm,\n"
+ " heightrounded\n"
+ "]{geometry}%\n"
+ " [2020-01-02]\n\n"
+ "\\RequirePackage{tocbasic}\n\n"
+ "\\RequirePackage[svgnames]%\n"
+ " {xcolor}%\n"
+ " [2023/11/15]\n\n"
+ "\\RequirePackage[raggedright]% OK?\n"
+ " {titlesec}\n\n"
+ "\\RequirePackage{xcolor}%\n"
+ " [2022/06/12]\n\n"
+ "\\RequirePackage{hyperref}% To load after titlesec!\n"
+ " [2023-02-07]";
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