我的邏輯中存在一些基于正則表達式拆分字符串的錯誤。目標是為 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;
}
添加回答
舉報
0/150
提交
取消