Java Regex,替换sql查询中的关键字

时间:2015-06-05 13:39:35

标签: java sql regex oracle

我正在尝试解析数以千计的Oracle SQL脚本WHERE子句。

我想用其他内容替换关键字用户(如当前登录的人)。我不能只是替换all,因为用户可能在where子句中用作列名的另一个单词的一部分,例如payuser。我不能简单地检查它的两侧是否有空格,因为它可能在括号内或旁边有一个等号或其他数学字符。

其中(用户名= 用户或admin = 用户)和loggedIn = 用户按pay_group_code排序; < / p>

public class TestClass{

     public static void main(String []args){

        String where = "where (username = user or admin = user) and loggedIn=user  order by pay_group_code;";

        where = where.replaceAll("\buser\b", "test");

        System.out.println(where);
     }
}

1 个答案:

答案 0 :(得分:3)

replaceAll内,您需要使用双转义符号:

where = where.replaceAll("(?i)\\buser\\b", "test");

如果没有双重转义,则匹配退格BS符号。

请参阅demo