regex - 基本算术正则表达式不匹配独立正/负数

标签 regex

我使用以下 RegEx 基本上过滤掉任何文本,并接受数字 + 运算符。

([-+]?[0-9]*\.?[0-9]+[\/\+\-\*])+([-+]?[0-9]*\.?[0-9]+)

所以它抓取 1+1、1-1、2*2、10/2 等。由于我正在编写的解决方案不只是计算行上的表达式,而是将所有计算的行总计,我需要允许用户单独放置会影响总数的正/负数(500、-500、+500(防呆)。

Here is the test I've been running.我需要能够在测试用例中匹配 +500、-500 和 500,同时仍然排除任何文本。我对 RegEx 非常糟糕,所以非常感谢任何帮助!

最佳答案

您的正则表达式要求两个组至少出现一次。您可以通过更改 + 使第一组成为可选组。至 *只需要第二组的比赛,并像这样让它更短一点。

(?:[-+]?\d*\.?\d+[\/*+-])*(?:[+-]?\d*\.?\d+)

See demo at regex101

关于regex - 基本算术正则表达式不匹配独立正/负数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33634122/

相关文章:

java - 如何使用正则表达式将字符串按最后一个字符拆分?

javascript - 正则表达式 : Matching a word containing characters

javascript - 如何识别和删除文本中的任何类型的项目符号

python - 正则表达式匹配之间的字符串列表

regex - 让 nginx 替换 css 样式表

regex - Linux筛选器大日志文件用于报告

python - 正则表达式,仅在字符串中间查找模式

python - 正则表达式仅捕获 0 到 85

regex - 如何在/bin/sh脚本中编写并匹配正则表达式?

Java 正则表达式 hasNext() 匹配下一个的结尾