import java.io.*;
public class Test {
public static void main(String args[]) {
String Str = new String("where test = (:viztest)");
System.out.print("Return Value :" );
System.out.println(Str.replaceFirst("(:viztest)", "any('25','324')"));
}
}
结果是
$javac Test.java
$java -Xmx128M -Xms16M Test
Return Value :where test = (any('25','324'))
它应该是where test = any('25','324')
为什么忽略替换括号以及如何修复它?
答案 0 :(得分:10)
你需要转义括号(参数是正则表达式,(...)
定义一个捕获组):
Str.replaceFirst("\\(:viztest\\)")
或
Str.replaceFirst(Pattern.quote("(:viztest)")
答案 1 :(得分:1)
这很简单:replaceFirst希望将正则表达式作为第一个参数。在正则表达式中,括号表示一个组。你需要用反斜杠来逃避它们。
答案 2 :(得分:0)
您可以将括号括在[]
中,它也会将其删除:
System.out.println(Str.replaceFirst("[(]:viztest[)]", "any('25','324')"));