我认为问题在标题中,
我已经使用此正则表达式\\((.*?)\\)
尝试过匹配器和模式,但是它使我只是括号中没有*3
的字符串,
我该如何转换:(a+b)*3+7
对此:(aplusb)*3+7
我尝试全部替换,但也替换了括号中的“ +”,我得到了这个(aplusb)*3plus7
但我想像我对它说的那样替换它:(aplusb)*3+7
在问之前我尝试了很多方法,所以请帮助我
感谢thanx,对我的英语能力很弱表示抱歉:)
最佳答案
使用下面的正则表达式,然后将匹配的符号+
替换为plus
。由于+
是正则表达式元字符,因此您需要对其进行转义以匹配文字+
符号。
\+(?=[^()]*\))
上面的正则表达式仅在后跟符号
+
时才匹配,[^()]*
任何字符,但不包括(
或)
零次或多次。\)
再加上右括号。(?=...)
称为positive lookahead assertion,它断言是否会发生匹配。这不会消耗任何字符。DEMO
System.out.println("(a+b)*3+7".replaceAll("\\+(?=[^()]*\\))", "plus"));
输出:
(aplusb)*3+7