正则表达式在Java程序中不匹配

时间:2018-03-23 10:06:02

标签: java regex

我构建了以下regex。这与函数调用fn-bea:uuid()

匹配

它显然与函数匹配,但是当它集成到我的java程序中时:

xqueryFileContent.replaceAll("(fn\\-bea:uuid\\(\\))", "0");

该功能未被替换。我缺少什么想法?

4 个答案:

答案 0 :(得分:2)

这里没有必要使用正则表达式。只需String#replace即可进行简单的字符串搜索替换:

xqueryFileContent = xqueryFileContent.replace("fn-bea:uuid()", "0");

如果必须使用正则表达式,请使用Pattern.quote引用所有特殊字符:

xqueryFileContent = xqueryFileContent.replaceAll( 
  Pattern.quote("fn-bea:uuid()"), "0" ); 

答案 1 :(得分:-1)

您不需要逃避-

xqueryFileContent.replaceAll("(fn-bea:uuid\\(\\))", "0");

答案 2 :(得分:-1)

只需将转义字符放在字符类[ ]中。

xqueryFileContent = xqueryFileContent.replaceAll("(fn[-]bea:uuid[(][)])", "0");

我还想提一件事,replaceAll将返回结果字符串。所以你必须存储返回值。

答案 3 :(得分:-1)

您必须使用replaceAll的结果:

xqueryFileContent = xqueryFileContent.replaceAll("(fn\\-bea:uuid\\(\\))", "0");