无法用java中的regex替换字符串

时间:2016-04-06 14:37:09

标签: java regex

我试图在这样的查询中替换字符串匹配项:

SELECT * FROM DB WHERE AGE = 3 and NAME = 'VALUE'

我正在使用此正则表达式:NAME\s*=\s*'[A-Z]+'工作正常here

这就是我在Java中尝试的方式:

query.replaceAll("NAME\s*=\s*'[A-Z]+'", replacementString); // Gives me Invalid escape sequence message
query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString); 

Pattern pattern = Pattern.compile("NAME*= *'[A-Z]*'");
query.replaceAll(pattern.pattern(), replacementString);

Pattern pattern2 = Pattern.compile("NAME\\s*=\\s*'[A-Z]*'");                
query.replaceAll(pattern2.pattern(), replacementString);

这些都不起作用。

如何更换NAME =' VALUE'发生?

2 个答案:

答案 0 :(得分:1)

Java字符串是不可变的。

您需要将replaceAll调用的结果分配回字符串:

query = query.replaceAll(...);

答案 1 :(得分:0)

试试这个,

query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString); 
query.replaceAll("NAME\\s*=\\s*'[A-Z]+'", replacementString);

然后在你的模式中,

Pattern pattern2 = Pattern.compile("NAME\\s*=\\s*'[A-Z]*'");                
query.replaceAll(pattern2.pattern(), replacementString);