18 Stimmen

Pattern.matches() ergibt StackOverflowError

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

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X