在 java 中将 (a+b)*3+7 替换为 (aplusb)*3+7?
replace (a+b)*3+7 by (aplusb)*3+7 in java?
我认为问题在标题中,
我已经用这个正则表达式 \((.*?)\)
尝试了匹配器和模式,但它让我得到的只是括号之间的字符串,没有 *3
,
我怎样才能改变这个:(a+b)*3+7
为此:(aplusb)*3+7
我尝试了全部替换,但它也替换了括号外的“+”,我明白了 (aplusb)*3plus7
但我想像我说的那样替换它:(aplusb)*3+7
我试了很多方法才问,所以请帮助我
谢谢你的帮助,对不起我的英语不好:)
使用下面的正则表达式,然后将匹配的符号 +
替换为 plus
。由于 +
是正则表达式元字符,您需要将其转义以匹配文字 +
符号。
\+(?=[^()]*\))
以上正则表达式匹配符号 +
仅当其后跟
[^()]*
任何字符但不属于 (
或 )
零次或多次。
\)
后面跟着一个右括号。
(?=...)
调用了 positive lookahead assertion 断言匹配是否会发生。这不会消耗任何字符。
System.out.println("(a+b)*3+7".replaceAll("\+(?=[^()]*\))", "plus"));
输出:
(aplusb)*3+7
为什么不使用 String.replaceFirst()?
public class Main {
public static void main(String[] args) {
String s="(a+b)*3+7";
System.out.println(s.replaceFirst("\+","plus"));
}
}
结果:(aplusb)*3+7
我认为问题在标题中,
我已经用这个正则表达式 \((.*?)\)
尝试了匹配器和模式,但它让我得到的只是括号之间的字符串,没有 *3
,
我怎样才能改变这个:(a+b)*3+7
为此:(aplusb)*3+7
我尝试了全部替换,但它也替换了括号外的“+”,我明白了 (aplusb)*3plus7
但我想像我说的那样替换它:(aplusb)*3+7
我试了很多方法才问,所以请帮助我 谢谢你的帮助,对不起我的英语不好:)
使用下面的正则表达式,然后将匹配的符号 +
替换为 plus
。由于 +
是正则表达式元字符,您需要将其转义以匹配文字 +
符号。
\+(?=[^()]*\))
以上正则表达式匹配符号 +
仅当其后跟
[^()]*
任何字符但不属于(
或)
零次或多次。\)
后面跟着一个右括号。(?=...)
调用了 positive lookahead assertion 断言匹配是否会发生。这不会消耗任何字符。
System.out.println("(a+b)*3+7".replaceAll("\+(?=[^()]*\))", "plus"));
输出:
(aplusb)*3+7
为什么不使用 String.replaceFirst()?
public class Main {
public static void main(String[] args) {
String s="(a+b)*3+7";
System.out.println(s.replaceFirst("\+","plus"));
}
}
结果:(aplusb)*3+7