此问题在此处已有答案:
Java Splitting With Math Expression(6个答案)
28天前关闭。
我正在看Java中的一些正则表达式,但我无法得到我想要做的。我的程序是一个计算器,我需要得到第二个运算符。要做到这一点,需要满足两个要求:
- 第一个运算符可以包含一个“-”符号(可以是负数)。
- 之后,我只想保存所有的数字(没有小数)后面的+,-,* 和/符号。
- 有必要忽略末尾的等号。
对于这个实现,只有两个操作符。例如,我的输入可以是:
-23+253=
34-83767=
-74567*3229765=
字符串
我使用这个正则表达式的第一个运算符:
this.display.getText().split("(?<=\\d)[-+*/]");
型
5条答案
按热度按时间o2g1uqev1#
试试这个。这将拆分所有的运算符和符号,并将它们存储在一个数组中,按顺序,以供进一步处理。它的工作原理是用一个特殊的字符串包围每个运算符,然后拆分该字符串。然后它将结果流式传输,以在返回数组之前捕获任何空字符串。
字符串
指纹
型
yvt65v4c2#
尝试以下操作。
个字符
1dkrff033#
下面是我做的一个正则表达式:
字符串
[+\-/*]
-匹配+、-、/和-。-需要转义,否则正则表达式将以不同的方式解析它。(-?\d+)
-一个或多个数字,前面可能有-=
-匹配结尾处的等号$
-文本的结尾50few1ms4#
什么 * 可能 * 是更有益的将是一个数学表达式解析器,其中数学表达式的所有组件都可以放置到一个String[]数组中,例如:
字符串
用法示例:
型
ztmd8pv55#
Regex:
下面是一个实用的正则表达式,它允许你使用命名组来精确地选择你想要的:
字符串
说明:
(?<sign>-?)
一个命名的组,捕获负数-
(如果存在?
)。它以后可作为sign
调用。^
行或字符串的开头。(?<firstNumber>\\d+)
一个命名的组,捕获一个或多个数字\d+
(对于Java字符串,使用额外的“”进行转义)。稍后可作为firstNumber调用。(?<operator>[-+*/])
一个命名的组,捕获操作符[-+*/]
,稍后可作为operator调用。1.......这是什么?
Demo:
型
取消注解此行:
型
查看另一个命名组;)
提示:
为了实现最终的正则表达式,我只需要从一个匹配所有行的正则表达式中重新编译:
型
然后添加了命名组。