我正在尝试从字符串中提取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
有谁知道为什么否定前瞻不能成功消除角度?
答案 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)