1

我最近问了一个类似的问题,但我需要更多帮助。

用户将能够输入一个字符串,例如:

"-5-1/-2"

它需要:用 +,-,*,/,(,) 分隔,负数应该放在一起,在这种情况下 -5 和 -2 应该放在一起。

这是我目前拥有的:

String userStrWithoutSpaces=userStr.replaceAll(" ", "");
String[] tokens = userStrWithoutSpaces.split("(?<=[\\-+*/=()])|(?=[()\\-+*/=])");

除了将负数保持在一起之外,它还有效。

提前致谢。

4

3 回答 3

2

尝试这个:

String[] tokens = userStrWithoutSpaces.split(
    "(?<=[+*/=()])|((?<=-)(?!\\d))|(?=[()\\-+*/=])");

当连字符后跟数字时,这使用前瞻来不拆分

于 2013-01-07T23:49:17.177 回答
1

我会使用JFlex。你需要一个词法分析器,一段代码,它会给你一些输入文本的标记。JFlex 是词法分析器的生成器。非常快速和可靠的分析仪。你只指定一个规则,形式类似于正则表达式,非常方便。所有的低级工作都由 JFlex 完成。图片展示了 JFlex 的想法:

在此处输入图像描述

于 2013-01-07T23:48:07.397 回答
0

获取Java中算术表达式的结果:

如何解析作为字符串给出的数学表达式并返回一个数字?

在 java 中将其解析为它的数字和运算符组件:

用正则表达式拆分一个简单的数学表达式

于 2013-01-07T23:48:34.363 回答