java - Java中的字符串模式匹配问题

标签 java regex

在我的程序中使用时

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/

相关文章:

Java 字符串声明

java - 如何使用Java8功能根据参数从集合中获取项目

javascript - 如何使用 JavaScript 从字符串中提取十进制数

javascript - 正则表达式不允许负数

python - 使用 python 从文章中提取数据的多个正则表达式模式

regex - 检查是否由 `perl -i -pe` 完成任何替换

regex - 如何匹配直到最后一次出现 bash shell 中的字符

java - 在Java中,当ThreadLocal对象被修改时,修改是否会在下一次请求中持久化?

java - 查找并打印 10000 以下的完全数(Liang,Java 简介,练习 5.33)

java - 在eclipse中设置的android项目显示一些错误