正则表达式匹配不以。结尾的浮点数

时间:2010-07-28 18:27:37

标签: regex

我正在尝试从字符串中提取CSS位置 - 例如:

"top left bottom right center 0 0% 50% 100% 360deg 15.5% -16.3%"

问题是该字符串还包含角度“360deg”。我不希望任何跟随“deg”的数字与正则表达式匹配。目前,我有:

(-?([0-9]*\.[0-9]+|[0-9]+))|(center)|(top)|(left)|(bottom)|(right)

这匹配所有数字(包括角度 - 我不想要)。我尝试过使用否定前瞻:

(-?([0-9]*\.[0-9]+|[0-9]+))(?!deg)|(center)|(top)|(left)|(bottom)|(right)

但这似乎只是从360deg中删除了结束零 - 即360deg => 36

有谁知道为什么否定前瞻不能成功消除角度?

2 个答案:

答案 0 :(得分:2)

正则表达式匹配,因为它发现两个数字后面没有“deg”:36后跟0,而不是“deg”。 [0-9]*通常是贪婪的,但如果这导致匹配失败,它将尝试匹配较少数字的替代品。

您可以将否定前瞻更改为:

(?!deg|[0-9.])

答案 1 :(得分:0)

尝试添加单词边界:

(-?([0-9]*\.[0-9]+|[0-9]+)\b)|(center)|(top)|(left)|(bottom)|(right)