String tempprop="(kfsdk)#";
tempprop = tempprop.replaceAll("[^\\s]\\)\\#", "\"?if_exists}");
System.out.println("1"+tempprop+"2");
我希望输出为
1(kfsdk“?if_exists} 2
但是这个正则表达式的输出是
1(kfsd“?if_exists} 2
最后k个被修整了,我不知道为什么。
如果tempprop为()#,则输出应仅为1()#2,且不带“?if_exists
如果没有空格,则此正则表达式添加
"?if_exists
,否则按原样返回字符串 最佳答案
您可以使用负向后看而不是[^\\s]
,因为这会在最终输出中产生一些影响。也就是说,环顾四周的宽度为零。
String tempprop="(kfsdk)#";
tempprop = tempprop.replaceAll("(?<!\\s)\\)#", "\"?if_exists}");
System.out.println("1"+tempprop+"2");
输出:
1(kfsdk"?if_exists}2
说明:
(?<!\s)
负向后方断言前面提到的字符不是空格字符。\)#
与文字)#
符号匹配。