当我使用'+','*','('和')'时,我一直收到关于悬挂元字符的错误。
我已经尝试在正则表达式中转义那些字符,但我仍然得到错误。这就是我所拥有的:
"[-\\+\\*/%\\(\\)]"
更新
试验:
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];
}
* 这些行有例外情况。
答案 0 :(得分:7)
好的,我不知道你想在那里实现什么......特别是在这一行:
expression = expression.replaceFirst(token[0], "");
如果您的输入字符串为"+"
,那么您的整个正则表达式为+
。这不合法。
您需要引用输入字符串,以便在任何与正则表达式相关的操作中使用它,并且包括String
的{{1}}和.replaceFirst()
(但不是< / em> .replaceAll()
...)。
因此,请执行:
.replace()