正则表达式用于识别等式中的正数和负数,但不识别运算符

时间:2014-01-24 12:24:39

标签: .net regex

我的程序是一个计算器,用户输入一个字符串,输出是计算值的字符串。

我需要一个正则表达式来正确识别数字是否为负数,而不是减法运算符,这样:

输入1+2*-3-4/-5 匹配1, 2, -3, 4, -5

支持的运算符+, -, *, /. -([+\-\*\/]{1})-?\d+

正确匹配

目前,除了第一个号码外,[+\-\*\/]{1}(-?\d+)符合我的要求。

(\d+)[+\-\*\/](-?\d+)但是会​​匹配第一个号码,但会错误地将-3标识为3

http://rubular.com/r/Lz6df14BeK

但是现在我有点空白,有人可以建议我缺少什么吗?

5 个答案:

答案 0 :(得分:2)

试试这个正则表达式:

((?:^\-?\d+)|(?:(?<=[-+/*])(?:\-?\d+)))

答案 1 :(得分:1)

这个正则表达式怎么样:

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

答案 2 :(得分:1)

您可以使用:

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

<强> DEMO

说明:

enter image description here

答案 3 :(得分:1)

Here's my attempt.

((?<!\d)-\d+|\d+)

答案 4 :(得分:0)

我使用(?<=\D|^)(-)?[0-9]+处理类似的问题,但是此正则表达式将忽略运算符之间的空白。