了解Java的replaceFirst如何与正则表达式一起使用

时间:2016-06-13 21:17:11

标签: java regex replace

我有一个字符串,<parameter name="Browser" value="chrome" />。我想将chrome替换为Firefox。我的相关Java代码:

l = l.replaceFirst("value=\"*\"", "value=\"" + browser + '"');

将原始字符串转换为

<parameter name="Browser" value="Firefox"chrome" />。由于chrome"中的正则表达式与开括号和右括号相匹配,我对replaceFirst未被删除的方式感到困惑。

2 个答案:

答案 0 :(得分:2)

您的正则表达式不正确。 \"*\"匹配零个或多个"字符(\"*),后跟"。由于c不是",因此不匹配,因此仅包含公开引用。

您应该使用\".*\"代替(注意添加.),以匹配两个引号之间的任何字符的零个或多个。

答案 1 :(得分:2)

在第一个正则表达式value=\"*\"中,\"*\"匹配0个或更多"个字符,而不是您想要的任意数量的字符。正确的语法是value=\".*\"

您可以在http://regexr.com/上测试一个正则表达式,以便了解正则表达式的工作原理,并使用语法高亮显示。