Java中的字符串模式匹配问题 [英] String pattern matching problem in Java

查看:110
本文介绍了Java中的字符串模式匹配问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我使用的程序中

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)

有什么理由吗?我们怎能避免它?

Is there any reason? How can we avoid it?

推荐答案

string.replaceAll 的第一个参数是正则表达式,而不是j一个字符串。左开括号是正则表达式中的特殊字符,因此您必须将其转义:

The first argument to string.replaceAll is a regular expression, not just a string. The opening left bracket is a special character in a regex, so you must escape it:

line.replaceAll("\\(", "_");

或者,因为你要替换一个字符,你可以像这样使用 string.replace

Alternatively, since you are replacing a single character, you could use string.replace like so:

line.replace('(', '_');

这篇关于Java中的字符串模式匹配问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆