Regex 匹配不以结尾的浮点数的正则表达式
我试图从字符串中提取CSS位置-示例:Regex 匹配不以结尾的浮点数的正则表达式,regex,Regex,我试图从字符串中提取CSS位置-示例: "top left bottom right center 0 0% 50% 100% 360deg 15.5% -16.3%" 问题是字符串还包含一个角度“360度”。我不希望任何后跟“deg”的数字与正则表达式匹配。目前,我有: (-?([0-9]*\.[0-9]+|[0-9]+))|(center)|(top)|(left)|(bottom)|(right) 这匹配所有的数字(包括角度-我不想要)。我尝试过使用消极前瞻: (-?([0-9]*\.
"top left bottom right center 0 0% 50% 100% 360deg 15.5% -16.3%"
问题是字符串还包含一个角度“360度”。我不希望任何后跟“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
有人知道为什么负向前看无法成功删除角度吗?正则表达式匹配,因为它发现两个数字后面没有“deg”:36后面跟着
0
,这不是“deg”。[0-9]*
通常是贪婪的,但如果这导致匹配失败,它将尝试匹配更少的数字
您可以将负前瞻更改为:
(?!deg|[0-9.])
尝试添加单词边界:
(-?([0-9]*\.[0-9]+|[0-9]+)\b)|(center)|(top)|(left)|(bottom)|(right)