有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

在java中无法用正则表达式替换字符串

我试图替换查询中出现的字符串,如下所示:

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);

这些都不行

如何替换名称=‘值’出现的情况


共 (2) 个答案

  1. # 1 楼答案

    Java字符串是不可变的

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

    query = query.replaceAll(...);
    
  2. # 2 楼答案

    试试这个

    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);