使用正则表达式检查表达式

时间:2013-10-03 18:32:54

标签: java regex expression

我有这个方法,用于创建条件表达式的数组。

private void convertToList() {
    String regex = "[-]?[0-9]+([eE][-]?[0-9]+)?|([-+/*\\\\^])|([()])|(!)|(>=)|(<=)|(<)|(>)|(&&)|(==)|(!=)|([|][|])|(\\[)|(\\])|(and)|(or)|(not)|(true)|(false)|([A-Za-z_][A-Za-z_0-9]*)";
    Matcher m3 = Pattern.compile(regex).matcher(this.stringExp);
    this.arrayExp = new ArrayList<String>(this.stringExp.length());
    while (m3.find()) {
        arrayExp.add(m3.group());
    }
}

表达式可以包含单词,数字和运算符(您可以在正则表达式中看到)。

现在我想在标记化之前检查表达式是否有效。我试过这个,但它不起作用。

private static void checkString(String s){
    String regex = "[-]?[0-9]+([eE][-]?[0-9]+)?|([-+/*\\\\^])|([()])|(!)|(>=)|(<=)|(<)|(>)|(&&)|(==)|(!=)|([|][|])|(\\[)|(\\])|(and)|(or)|(not)|(true)|(false)|([A-Za-z_][A-Za-z_0-9]*)";
    Matcher m3 = Pattern.compile(regex).matcher(s);
    if (m3.matches()){
        System.out.println("OK");
    } else {
        System.out.println("Not ok");
    }
}

有效字符串的示例:

"a + b < 5"
"a <= b && c > 1 || a == 4"

无论如何要做到这一点?

1 个答案:

答案 0 :(得分:0)

你可能遇到空间问题。在您的示例中,字符串是空格,但它们在正则表达式中不匹配。