La mia domanda è abbastanza semplice ma sconcertante. Potrebbe essere che ci sia un semplice interruttore che risolve questo, ma io non sono molto esperto in Java regex ...Strange Java Unicode Regular Expression StringIndexOutOfBoundsException
String line = "";
line.replaceAll("(?i)(.)\\1{2,}", "$1");
Questo si blocca. Se rimuovo lo switch (?i)
, funziona. I tre caratteri unicode non sono casuali, sono stati trovati in mezzo a un grande testo coreano, ma non so che siano validi o meno.
La cosa strana è che la regex funziona per tutto il testo tranne questo. Perché ottengo l'errore?
questa è l'eccezione ottengo
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 6
at java.lang.String.charAt(String.java:658)
at java.lang.Character.codePointAt(Character.java:4668)
at java.util.regex.Pattern$CIBackRef.match(Pattern.java:4846)
at java.util.regex.Pattern$Curly.match(Pattern.java:4125)
at java.util.regex.Pattern$GroupTail.match(Pattern.java:4615)
at java.util.regex.Pattern$CharProperty.match(Pattern.java:3694)
at java.util.regex.Pattern$GroupHead.match(Pattern.java:4556)
at java.util.regex.Pattern$Start.match(Pattern.java:3408)
at java.util.regex.Matcher.search(Matcher.java:1199)
at java.util.regex.Matcher.find(Matcher.java:592)
at java.util.regex.Matcher.replaceAll(Matcher.java:902)
at java.lang.String.replaceAll(String.java:2162)
at tokenizer.Test.main(Test.java:51)
Vedere: [Java Regex Tutorial] (http://www.vogella.com/articles/JavaRegularExpressions/article.html) – Justin
Come si blocca? C'è qualche eccezione? – Thilo
Si prega di definire cosa si intende per arresto anomalo o "l'errore"? Non ci hai mostrato alcun errore. – eis