正则表达式匹配后面没有字符串

时间:2015-05-04 12:13:17

标签: regex

我使用以下正则表达式来检测负数:

([-]([0-9]*\.[0-9]+|[0-9]+))

但是我想跳过跟随$的比赛。 如果我使用下面的正则表达式:

([-]([0-9]*\.[0-9]+|[0-9]+)[^\$])

它会正确匹配位置,但会包含以下字符。 例如,在表达式中:

-0.6+3 - 3.0$

它将匹配:

-0.6+

我想只匹配

-0.6

2 个答案:

答案 0 :(得分:6)

([-]([0-9]*\.[0-9]+|[0-9]+)(?!\$)

你需要一个negative lookahead这里不会消耗,只能做出断言。

答案 1 :(得分:0)

从群组中删除$:

([-]([0-9]*\.[0-9]+|[0-9]+))[^\$]

你可以使用这个简化的正则表达式:

(-[0-9]+(?:\.[0-9]+)?)(?!\$)