悬空元字符

时间:2013-06-04 02:16:09

标签: java regex

当我使用'+','*','('和')'时,我一直收到关于悬挂元字符的错误。

我已经尝试在正则表达式中转义那些字符,但我仍然得到错误。这就是我所拥有的:

"[-\\+\\*/%\\(\\)]"

更新

试验:

String input = "+";

String vals = new WNScanner(input).getNextToken();    //**********
System.out.println("token: " + vals);
System.out.println(vals.matches("[-+*/%()]"));

来自另一个班级:

    ...

    String expression = input;
    ...

public String getNextToken() {

    String[] token = {""};

    if (expression.length() == 0)
        return "";

    token = expression.split("\\s");
    recentToken = token[0];
    expression = expression.replaceFirst(token[0], "");     //*************
    expression = expression.trim();

    return token[0];


}

* 这些行有例外情况。

1 个答案:

答案 0 :(得分:7)

好的,我不知道你想在那里实现什么......特别是在这一行:

expression = expression.replaceFirst(token[0], "");

如果您的输入字符串为"+",那么您的整个正则表达式+。这不合法。

您需要引用输入字符串,以便在任何与正则表达式相关的操作中使用它,并且包括String的{​​{1}}和.replaceFirst()(但不是< / em> .replaceAll() ...)。

因此,请执行:

.replace()