在我的程序中使用时
line.replaceAll("(", "_");
我得到了一个RuntimeException
:
at java.util.regex.Pattern.error(Unknown Source)
at java.util.regex.Pattern.accept(Unknown Source)
at java.util.regex.Pattern.group0(Unknown Source)
at java.util.regex.Pattern.sequence(Unknown Source)
at java.util.regex.Pattern.expr(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.util.regex.Pattern.<init>(Unknown Source)
at java.util.regex.Pattern.compile(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at Processing.processEarly(Processing.java:95)
at Processing.main(Processing.java:34)
有什么原因吗?我们该如何避免呢?
最佳答案
string.replaceAll
的第一个参数是一个正则表达式,而不仅仅是一个字符串。左括号是正则表达式中的特殊字符,因此您必须对其进行转义:
line.replaceAll("\\(", "_");
或者,由于您要替换单个字符,您可以像这样使用 string.replace
:
line.replace('(', '_');
关于java - Java中的字符串模式匹配问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2033161/