import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "(\\([A-Z]+\\)[^$]*\\$[^$]*\\$[,\\d]+)(?:(?:\\n(?!.*\\([A-Z]+\\)[^$]*\\$[^$]*\\$[,\\d]|D:).*)*\\n(D:.*))?";
final String string = "JT Meta Platforms, Inc. - Class A\n"
+ "Common Stock (META) [ST]S (partial) 02/08/2024 03/05/2024 $1,001 - $15,000\n"
+ "F S: New\n"
+ "S O: Morgan Stanley - Select UMA Account # 1\n"
+ "JT Microsoft Corporation - Common\n"
+ "Stock (MSFT) [ST]S (partial) 02/08/2024 03/05/2024 $1,001 - $15,000\n"
+ "F S: New\n"
+ "S O: Morgan Stanley - Select UMA Account # 1\n"
+ "JT Microsoft Corporation - Common\n"
+ "Stock (MSFT) [OP]P 02/13/2024 03/05/2024 $500,001 -\n"
+ "$1,000,000\n"
+ "F S: New\n"
+ "S O: Morgan Stanley - Portfolio Management Active Assets Account\n"
+ "D: Call options; Strike price $170; Expires 01/17 /2025\n"
+ "C: Ref: 044Q34N6";
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