gpt4 book ai didi

java - 悬挂元字符

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:28:33 25 4
gpt4 key购买 nike

当我使用“+”、“*”、“(”和“)”时,我总是收到关于悬挂元字符的错误。

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

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

更新:

测试:

String input = "+";

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

来自另一个类(class):

    ...

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];


}

* 这些行有异常(exception)。

最佳答案

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

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

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

您需要引用输入字符串以便在任何与正则表达式相关的操作中使用它,包括 String.replaceFirst() .replaceAll()(但不是 .replace()...)。

因此,做:

final String re = Pattern.quote(token[0]);
expression = expression.replaceFirst(re, "");

关于java - 悬挂元字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16908806/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com