我正在尝试创建一个能够在输入中缀表达式时遵循操作顺序的 Java 程序。为了简化输入,我决定最好使用regex
表达式拆分整个字符串。我已经能够将除 之外的所有内容拆分为数组中6 3
自己的String
值。splitLine
我的 SSCCE 尝试如下:
String line = "6 + 5 + 6 3 + 18";
String regex = "(?<=[-+*/()])|(?=[-+*/()])"; //Not spitting 6 3 correctly
String[] splitLine = line.split(regex);
for (int i=0; i<splitLine.length; i++) {
System.out.println(splitLine[i]);
}
输出:
6
+
5
+
6 3 //Error here
+
18
预期输出:
6
+
5
+
6 //Notice
3 //these
+
18
我已经尝试并尝试修改我的正则表达式并且没有成功。谁能告诉我为什么我的正则表达式没有在数组中将6
and拆分3
成他们自己的?Strings
splitLine
编辑:只是想指出我这样做是为了好玩,不是为了任何学校作业等。我只是想看看我是否可以编写一个程序来执行简单的中缀表达式。我同意有更好的方法来做到这一点,如果表达式变得更复杂,我会遇到一些问题。但不幸的是,这就是我的书建议我处理这一步的方式。
再次感谢所有快速评论和回答!