我认为这个问题在标题中,
我已经尝试过匹配器和模式,这个正则表达式\\((.*?)\\)但它只是让我只是括号之间的字符串,没有*3,
我怎么能改变这个:(a+b)*3+7
对此:(aplusb)*3+7
我尝试替换所有,但它也取代了括号中的'+',我得到了这个,(aplusb)*3plus7
但我想替换它像我说的那样:(aplusb)*3+7
我在问之前尝试了很多方法,所以请帮助我帮助我,抱歉我的弱英语:)
使用下面的正则表达式,然后用匹配的符号+替换plus.由于+是一个正则表达式元字符,您需要转义它以匹配文字+符号.
\+(?=[^()]*\))
Run Code Online (Sandbox Code Playgroud)
上面的正则表达式+只有符号后面才会匹配,
[^()]*任何字符,但不是(或)零或多次.
\) 接下来是一个结束括号.
(?=...)称为正向前瞻断言,断言是否发生匹配.这不会消耗任何角色.
System.out.println("(a+b)*3+7".replaceAll("\\+(?=[^()]*\\))", "plus"));
Run Code Online (Sandbox Code Playgroud)
输出:
(aplusb)*3+7
Run Code Online (Sandbox Code Playgroud)