我试图在这样的查询中替换字符串匹配项:
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'发生?
答案 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);