Ich verwende Pattern.matches von Java, um einen Datenblock mit einer Regex abzugleichen. Der Datenblock kann eine einzelne Zeile oder mehrere Zeilen sein. Das Problem ist, dass ich, sobald meine Daten mehr als 15 Zeilen umfassen (typischerweise mehr als 17-18 Zeilen), Stackoverflowerror bekomme. Bei Daten, die weniger als 15 Zeilen umfassen, funktioniert der Regex einwandfrei.
Die Regex hat dieses Format:
Domainname -> Leerzeichen -> , -> Leerzeichen -> Zahl -> Leerzeichen -> , -> Leerzeichen -> Zahl -> Zeilenumbruch
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
Der Datenblock, den ich zum Testen gegen diesen Regex verwende, ist der folgende
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
abc.com, 123, 456
Dies ist der Code:
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
boolean valid = Pattern.matches(regex, data); //fails here