【问题标题】:Java Regex for proper math operation用于正确数学运算的 Java 正则表达式
【发布时间】:2018-02-22 21:29:54
【问题描述】:

这个正则表达式:

("[(\\d){1,} (*|+|-|/){1} (\\d){1,}]")

应该捕获所有正确的数学运算,

(例如:“3+4”、“3+3*6+2/3-6*434234+5”、“345345+2342/3/3/4-5”)

但不应该抓住错误的。

(例如:"3+-2","+1","456+/5","3+4+5+")

但它似乎根本没有捕捉到任何输入。 这里有什么问题?

【问题讨论】:

    标签: java regex string math calculator


    【解决方案1】:

    您忘记了必须使用反斜杠转义未转义的分隔符:

    [(\\d){1,} (*|+|-|\/){1} (\\d){1,}]
                      ^ Escaped with backslash
    

    编辑:

    在 Java 中,您需要使用两个反斜杠,因为反斜杠在 Java 中也是转义字符:

    Matcher match = Pattern.compile("[(\\\\d){1,} (*|+|-|\\/){1} (\\\\d){1,}]").matcher("3+3*6+2/3-6*434234+5");
    String s = "";
    while (match.find())
        s += match.group() + "\n";
    System.out.println(s);
    

    【讨论】:

    • 你不需要在java中加倍吗?
    • @Leyffda 是正确的。这只是原始的正则表达式。我将澄清需要双反斜杠。
    • 好的,它不适用于\/ 或\\/,但\\\\/ 出于某种原因可以...谢谢
    猜你喜欢
    • 2013-03-13
    • 2011-07-25
    • 2011-01-03
    • 1970-01-01
    • 2015-05-02
    • 1970-01-01
    • 2014-06-02
    • 1970-01-01
    • 2012-10-30
    相关资源
    最近更新 更多