在java中用(aplusb)*3 + 7替换(a + b)*3 + 7?

1 java regex replace

我认为这个问题在标题中,

我已经尝试过匹配器和模式,这个正则表达式\\((.*?)\\)但它只是让我只是括号之间的字符串,没有*3,

我怎么能改变这个:(a+b)*3+7 对此:(aplusb)*3+7

我尝试替换所有,但它也取代了括号中的'+',我得到了这个,(aplusb)*3plus7 但我想替换它像我说的那样:(aplusb)*3+7

我在问之前尝试了很多方法,所以请帮助我帮助我,抱歉我的弱英语:)

Avi*_*Raj 5

使用下面的正则表达式,然后用匹配的符号+替换plus.由于+是一个正则表达式元字符,您需要转义它以匹配文字+符号.

\+(?=[^()]*\))
Run Code Online (Sandbox Code Playgroud)

上面的正则表达式+只有符号后面才会匹配,

  • [^()]*任何字符,但不是()零或多次.

  • \) 接下来是一个结束括号.

  • (?=...)称为正向前瞻断言,断言是否发生匹配.这不会消耗任何角色.

DEMO

System.out.println("(a+b)*3+7".replaceAll("\\+(?=[^()]*\\))", "plus"));
Run Code Online (Sandbox Code Playgroud)

输出:

(aplusb)*3+7
Run Code Online (Sandbox Code Playgroud)