在Java中搜索并替换正则表达式

时间:2016-10-29 00:44:05

标签: java regex replace

在我的字符串中,我想在开头和结尾添加一个#:强制转换(。* as varchar)

我试过了:

s.replaceAll("cast(.* as varchar)","#cast$1#");

但是对于字符串“('abas'+ cast(x as varchar))”,结果是“('abas'+'#cast(x as varchar#') )“这是不正确的。我做错了什么?

2 个答案:

答案 0 :(得分:2)

s.replaceAll("(cast\\(\\.\\* as varchar\\))","#$1#");

会做的伎俩。

你收到了错误的输出,因为“。* as varchar ”周围的括号没有被删除,因此$ 1正在替换它们内部的内容。

答案 1 :(得分:0)

()有特殊的改进,你需要逃脱:

s.replaceAll("(cast\\(.* as varchar\\))","#$1#");