Câu hỏi của tôi khá đơn giản nhưng khó hiểu. Nó có thể là có một chuyển đổi đơn giản mà sửa lỗi này nhưng tôi không có nhiều kinh nghiệm trong regexes Java ...Strange Java Unicode Regular Expression StringIndexOutOfBoundsException
String line = "";
line.replaceAll("(?i)(.)\\1{2,}", "$1");
Điều này bị treo. Nếu tôi tháo khóa (?i)
, nó sẽ hoạt động. Ba ký tự unicode không phải ngẫu nhiên, chúng được tìm thấy giữa một văn bản lớn của Hàn Quốc, nhưng tôi không biết chúng có hợp lệ hay không.
Điều kỳ lạ là regex hoạt động cho tất cả văn bản khác nhưng điều này. Tại sao tôi gặp lỗi?
Đây là ngoại lệ tôi nhận được
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)
Xem: [Hướng dẫn về Java Regex] (http://www.vogella.com/articles/JavaRegularExpressions/article.html) – Justin
Sự cố xảy ra như thế nào? Có ngoại lệ nào không? – Thilo
Vui lòng xác định ý của bạn bằng cách gặp lỗi hoặc "lỗi"? Bạn đã không cho chúng tôi thấy bất kỳ lỗi nào. – eis