加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 悬空元字符

发布时间:2020-12-15 04:10:55 所属栏目:Java 来源:网络整理
导读:当我使用”,’*’,'(‘和’)’时,我一直收到关于悬挂元字符的错误. 我已经尝试在正则表达式中转义那些字符,但我仍然得到错误.这就是我所拥有的: "[-+*/%()]" 更新: 测试: String input = "+";String vals = new WNScanner(input).getNextToken();
当我使用”,’*’,'(‘和’)’时,我一直收到关于悬挂元字符的错误.

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

"[-+*/%()]"

更新:

测试:

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


}

*这些行有例外.

解决方法

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

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

如果你的输入字符串是“”,那么你的整个正则表达式就是.这不合法.

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

因此,做:

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读