猿问

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

我的逻辑中存在一些基于正则表达式拆分字符串的错误。目标是为 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

现在,代码正在无限运行。


汪汪一只猫
浏览 105回答 1
1回答

叮当猫咪

这将可以:public Stack<String> getStack(String expression){&nbsp; &nbsp; Stack<String> stack = new Stack<>();&nbsp; &nbsp; Pattern pattern = Pattern.compile("[0-9a-z]+|\\+|\\*");&nbsp; &nbsp; Matcher matcher = pattern.matcher(expression);&nbsp; &nbsp; while(matcher.find()) {&nbsp; &nbsp; &nbsp; &nbsp;stack.push(matcher.group());&nbsp; &nbsp; }&nbsp; &nbsp; System.out.println(stack.toString());&nbsp; &nbsp; return stack;}
随时随地看视频慕课网APP

相关分类

Java
我要回答