有一段代码:
String[] del = {"\"", "\'", ",", ".", ";", "`", ":", "!", "(", ")", "<", ">", "-", "_"};
for (String delElement : del) {
word = word.replaceAll(delElement, "");
}
在编译期间抛出 PatternSyntaxException:
Exception in thread "main" java.util.regex.PatternSyntaxException: Unclosed group near index 1
(
^
at java.util.regex.Pattern.error(Pattern.java:1955)
at java.util.regex.Pattern.accept(Pattern.java:1813)
at java.util.regex.Pattern.group0(Pattern.java:2908)
at java.util.regex.Pattern.sequence(Pattern.java:2051)
at java.util.regex.Pattern.expr(Pattern.java:1996)
at java.util.regex.Pattern.compile(Pattern.java:1696)
at java.util.regex.Pattern.<init>(Pattern.java:1351)
at java.util.regex.Pattern.compile(Pattern.java:1028)
at java.lang.String.replaceAll(String.java:2223)
at WordCounter.main(WordCounter.java:20)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:147)
我该如何解决?
replaceAll由于该方法将正则表达式作为第一个参数,因此被(认为是特殊的。字符(作为组的开头等)。所以需要屏蔽。也一样)。此外,.在正则表达式中,它匹配任何字符,因此.replaceAll(".", "")结果为空字符串。自注册以来。表达式,那么您可以将所有要排除的元素合并到一个表达式中,以便只生成一个
replaceAll. 但是,此选项的可读性差别不大:试试这样: