我正在尝试解析数以千计的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);
}
}
答案 0 :(得分:3)
在replaceAll
内,您需要使用双转义符号:
where = where.replaceAll("(?i)\\buser\\b", "test");
如果没有双重转义,则匹配退格BS符号。
请参阅demo