import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Example {
public static void main(String[] args) {
final String regex = "^.*?((?:\\s+\\d+\\.\\s+Nx?[a-h][1-8]\\s+[RBKQN]?x?[a-h][1-8]){2,}).*$";
final String string = "[Event \"Live Chess\"] [Site \"Chess.com\"] [Date \"2023.02.17\"] [Round \"-\"] [White \"-\"] [Black \"-\"] [Result \"1-0\"] [WhiteElo \"925\"] [BlackElo \"939\"] [TimeControl \"180+2\"] [EndTime \"17:39:13 PST\"] [Termination \"- won by checkmate\"]\n\n"
+ "e4 e5 2. Nc3 d6 3. Bc4 h6 4. d3 Nc6 5. f4 Qe7 6. Nf3 Be6 7. f5 Bxc4 8. dxc4 O-O-O 9. b3 Nf6 10. O-O g5 11. fxg6 fxg6 12. Nh4 g5 13. Ng6 Qg7 14. Nxh8 Qxh8 15. Nd5 Nxd5 16. exd5 Nd4 17. c3 Nxb3 18. axb3 a6 19. b4 Be7 20. Qg4+ Kb8 21. b5 axb5 22. cxb5 b6 23. Qa4 Kc8 24. Qa8+ Kd7 25. Qc6+ Kc8 26. Ra8# 1-0\n\n"
+ "[Event \"Live Chess\"] [Site \"Chess.com\"] [Date \"2023.02.17\"] [Round \"-\"] [White \"-\"] [Black \"-\"] [Result \"1-0\"] [WhiteElo \"914\"] [BlackElo \"841\"] [TimeControl \"180+2\"] [EndTime \"19:06:57 PST\"] [Termination \"- won by resignation\"]\n\n"
+ "e4 e5 2. Nc3 Nc6 3. Bc4 Nf6 4. d3 Bc5 5. Na4 Bb4+ 6. c3 Be7 7. f4 b5 8. Bxb5 a6 9. Bc4 O-O 10. f5 d5 11. exd5 Nxd5 12. Nf3 Bxf5 13. O-O Bc5+ 14. Nxc5 Nf4 15. Nxe5 Nxe5 16. Rxf4 Bg4 17. Rxg4 Nxg4 18. Qxg4 Re8 19. Bh6 g6 1-0";
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