为了账号安全,请及时绑定邮箱和手机立即绑定

使用正则表达式拆分 java 字符串,然后存储到堆栈中

使用正则表达式拆分 java 字符串,然后存储到堆栈中

汪汪一只猫 2022-09-22 10:45:45
我的逻辑中存在一些基于正则表达式拆分字符串的错误。目标是为 python 语法创建一个分词器。我写了四个简单的正则表达式;数字、浮点数、运算符和变量。我想将上面列出的四个正则表达式中的第一组提取到一个字符串中,然后将其推送到我的堆栈中。String s = "123+abc+123abc";String allRegex = String.format("%s|%s|%s|%s", digit, floats, operators, variable);Pattern allRegexPattern = Pattern.compile(allRegex);Matcher matchString = allRegexPattern.matcher(s);int group = 1;while (s != null){    if (group == 5)        group = 1;    if (matchString.find())    {        String temp = matchString.group(group);        if (temp != null)        {            tokens.add(temp);            s = s.replace(temp, "");        }        else            group++;    }}//Expecting ["123","+","abc","+","123abc"] in my stack现在,代码正在无限运行。
查看完整描述

1 回答

?
叮当猫咪

TA贡献1776条经验 获得超12个赞

这将可以:


public Stack<String> getStack(String expression){

    Stack<String> stack = new Stack<>();

    Pattern pattern = Pattern.compile("[0-9a-z]+|\\+|\\*");

    Matcher matcher = pattern.matcher(expression);

    while(matcher.find()) {

       stack.push(matcher.group());

    }

    System.out.println(stack.toString());

    return stack;

}


查看完整回答
反对 回复 2022-09-22
  • 1 回答
  • 0 关注
  • 82 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信