Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配不以结尾的浮点数的正则表达式_Regex - Fatal编程技术网

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

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]*\.

我试图从字符串中提取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]*\.[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)