我的程序是一个计算器,用户输入一个字符串,输出是计算值的字符串。
我需要一个正则表达式来正确识别数字是否为负数,而不是减法运算符,这样:
输入1+2*-3-4/-5
匹配1, 2, -3, 4, -5
支持的运算符+, -, *, /. -
与([+\-\*\/]{1})-?\d+
目前,除了第一个号码外,[+\-\*\/]{1}(-?\d+)
符合我的要求。
(\d+)[+\-\*\/](-?\d+)
但是会匹配第一个号码,但会错误地将-3
标识为3
。
http://rubular.com/r/Lz6df14BeK
但是现在我有点空白,有人可以建议我缺少什么吗?
答案 0 :(得分:2)
试试这个正则表达式:
((?:^\-?\d+)|(?:(?<=[-+/*])(?:\-?\d+)))
答案 1 :(得分:1)
这个正则表达式怎么样:
(?:^|[-+*/])-?\d+
答案 2 :(得分:1)
答案 3 :(得分:1)
((?<!\d)-\d+|\d+)
答案 4 :(得分:0)
我使用(?<=\D|^)(-)?[0-9]+
处理类似的问题,但是此正则表达式将忽略运算符之间的空白。