sto usando Pattern.matches di java per abbinare un blocco di dati ad una regex. Il blocco di dati può essere una singola riga o più righe. Il problema è che una volta che i miei dati diventano più di 15 righe (in genere più di 17-18 linee), inizio a ottenere stackoverflowerror. Per i dati inferiori a 15 righe, la regex funziona correttamente.Pattern.matches() dà StackOverflowError
l'espressione regolare è di questo formato:
domainname -> spazio ->, -> spazio -> Numero -> spazio ->, -> spazio -> Numero -> nuova linea
String regex = "^(([a-zA-Z0-9][a-zA-Z0-9\\-]*\\.)+([a-zA-Z]{2,})\\s*,\\s*\\d+\\s*,\\s*\\d+(\\r?\\n)?)+$";
I dati blocco io uso di prova contro questa regex questo
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
questo è il codice:
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
+1 per riscontrare effettivamente questo errore omonimo in natura. :) – Xion
Suggerimenti 1) Non devi sfuggire a '-' qui:' [a-zA-Z0-9 \\ -] '(es .:' a-zA-Z-] ') funziona 2) Là non è necessario usare '^' e '$' quando si usa '.matches()' – NullUserException
Hai bisogno dei gruppi o anche i gruppi non di cattura funzionano? Se è così, sostituisci '(' with '(?:'. – Thomas