正则表达式的方程中识别正数和负数,但不是运营商

问题描述 投票:3回答:5

我的节目是用户在其中输入一个字符串计算器,并且输出是所计算的值的字符串。

我需要一个正则表达式正确识别时数是负的,而不是减法操作,使得:

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

支持的运算符是被正确地匹配+, -, *, /. - ([+\-\*\/]{1})-?\d+

目前,[+\-\*\/]{1}(-?\d+)将匹配我需要什么,除了第一个数字。

然而(\d+)[+\-\*\/](-?\d+)将匹配所述第一数目,但不正确地标识-3作为3

http://rubular.com/r/Lz6df14BeK

但现在我种一片空白,任何人都可以建议我缺少的是什么?

.net regex
5个回答
2
投票

试试这个正则表达式:

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

1
投票

这个怎么样的正则表达式:

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

1
投票

您可以使用 :

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

DEMO

说明:


1
投票

Here's my attempt.

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

0
投票

我用(?<=\D|^)(-)?[0-9]+一个类似的问题,但这个表达式会忽略运营商之间的空白。