用String - java中的一些数学字符替换substring

时间:2015-07-27 06:25:29

标签: java regex special-characters replaceall

我的数学表达式看起来像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表达式。

3 个答案:

答案 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);
    }