我的数学表达式看起来像String st = "((3-(5-2))+(2*(5-1)))";
,我希望replaceAll
(5-1)4,然后replaceAll
(2 * 4)8和...用4替换(5-1)我没有问题但是当我收到(2 * 4)时,因为它有*星号,这段代码(st.replaceAll("(2*4)", 8);
)不起作用!< / p>
你能帮我看一下包含特殊字符的replaceAll
表达式。
答案 0 :(得分:2)
为什么要使用replaceAll()尝试使用replace()代替。
因为replaceAll()接受正则表达式而*成为量词。
String st = "((3-(5-2))+(2*(5-1)))";
st = st.replace("(5-1)", "4");
st = st.replace("(2*4)", "8");
System.out.println(st);
答案 1 :(得分:1)
replaceAll
采用正则表达式,因此您需要使用*
转义\
。
因为你在java中,所以你需要从正则表达式中转义\
答案 2 :(得分:0)
您必须在endpointBehavior
之前附加"\"
,要在java中使用,请再使用"*"
。
还需要逃避牙箍。
"\"
<强>输出强>
public static void main(String[] args) {
String st = "((3-(5-2))+(2*(5-1)))";
st = st.replaceAll("(5-1)", "4");
System.out.println(st);
st = st.replaceAll("(2\\*\\(4\\))", "8");
System.out.println(st);
}