我认为问题在标题中,

我已经使用此正则表达式\\((.*?)\\)尝试过匹配器和模式,但是它使我只是括号中没有*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

09-20 22:03