" a.county_id = $a.county_id$".replaceAll(" *.county_id*county_id\\$","1=1")为什么结果不是1=1?

解决方案 »

  1.   

    你写的正则不匹配前面的串,看不懂你写的正则。
    1:你是不是想把整个串 替换成“1=1”?
    是的话 replaceAll("^.*$","1=1"),不过这样没什么意义,你直接令原始字符串=“1=1”即可了。
      

  2.   

    正则表达式中*表示*前面的符号有0或者多个。句号.表示任意字符。所以应该是这样的。我觉得
    " a.county_id = $a.county_id$".replaceAll(".*\\.county_id.*county_id\\$","1=1"
      

  3.   

    String类定义了:
    public String replaceAll(String regex,String replacement)
    你的正则表达式写的有问题。你首先匹配的是有0次或多次的空格紧接着就匹配".county_i",然后匹配0次或多次"d"....
    楼主肯定第一次接触正则表达式
      

  4.   

    自己解决了,strP="county_id";
    sql=sql.replaceAll("\\s([a-zA-Z0-9_\\.])*"+strP+"\\s+like\\s+'%*\\$([a-zA-Z0-9_\\.])*"+strP+"\\$%*'"," 1=1");//将" county_id = $county_id$" 或" county_id like '%$county_id$%'" 替换为" 1=1",即将这个条件去掉