gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 10:04:58 24 4
gpt4 key购买 nike

我基于正则表达式拆分字符串的逻辑存在一些错误。目标是为 python 语法创建一个分词器。我写了四个简单的正则表达式;数字、 float 、运算符和变量。我想将上面列出的四个正则表达式中的第一组提取到一个字符串中,然后将其推送到我的堆栈中。

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

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

最佳答案

这样做会:

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

关于java - 使用正则表达式拆分 java 字符串然后存储到堆栈中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55541921/

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