我正在使用以下部分进行SQL查询...
BRANCH ='Chennai'和$ ACCOUNT_NO ='12312321'
在这里我想用我已经定义的PL / SQL函数替换$,我需要输出
BRANCH ='Chennai'和decode_acc_no(ACCOUNT_NO)='12312321'
我需要使用String来获取所需的输出??正常表达式是什么?
答案 0 :(得分:1)
使用此:
query.replace("\\$([A-Za-z0-9_]*)", "decode_acc_no($1)");
答案 1 :(得分:1)
这样的事情应该有效:
String str = "BRANCH='Chennai' AND $ACCOUNT_NO='12312321'";
String newStr = str.replaceAll("^(.+?)\\$([A-Z_]+)(.*)$", "$1decode_acc_no($2)$3");
System.out.println(str);
System.out.println(newStr);
打印:
BRANCH ='Chennai'和$ ACCOUNT_NO ='12312321'
BRANCH ='Chennai'和decode_acc_no(ACCOUNT_NO)='12312321'
编辑:根据您的评论,不,这只会与您在问题中提供的结构相匹配。如果您想要更多灵活性,可以使用:\\$(A-Z_]+)
String str = "BRANCH='Chennai' AND $ACCOUNT_NO='12312321' OR $BENIFICIARY_ACC_NO='2323434'"
String newStr = str.replaceAll("\\$([A-Z_]+)", "decode_acc_no($1)");
System.out.println(newStr);
打印出以下内容:
BRANCH ='Chennai'AND decode_acc_no(ACCOUNT_NO)='12312321'ORX_cNC_no(BENIFICIARY_ACC_NO)='2323434'
答案 2 :(得分:0)
快速黑客将是
String original =“BRANCH ='Chennai'AND $ ACCOUNT_NO ='12312321'”; System.out.println(original.replace(“'AND $ ACCOUNT_NO”,“'AND decode_acc_no(ACCOUNT_NO)”));
你也可以使用正则表达式s / \ $([A-Za-z _] *)/ decode_acc_no(\ 1)/ g
答案 3 :(得分:0)
String in = "BRANCH='Chennai' AND $ACCOUNT_NO='12312321'";
String result = in.replaceAll("\\$([^=]+)", "decode_acc_no($1)");
<强>输出:强>
BRANCH =&#39;奈&#39; AND decode_acc_no(ACCOUNT_NO)=&#39; 12312321&#39;
正则表达式\\$([^=]+)
搜索$
个字符,然后匹配非=
的所有内容。这存储在第一个捕获组中。使用$1
在替换字符串中重用该捕获组的内容。
What absolutely every Programmer should know about regular expressions
免责声明:我自己的博客文章