Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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,这是我的正则表达式,用于获取“left”及其值 /(left\s*:\s*)(\d+)?(px)/ 我的问题是,它把填充物向左拉 vertical-align: top; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; width: 420px; position: absolute; top: 0px; left: 700px; height:

这是我的正则表达式,用于获取“left”及其值

/(left\s*:\s*)(\d+)?(px)/
我的问题是,它把填充物向左拉

vertical-align: top; padding-top: 0px; padding-right: 0px; padding-bottom: 0px; padding-left: 0px; display: list-item; width: 420px; position: absolute; top: 0px; left: 700px; height: 580px;
我怎样才能得到“左”及其唯一值

我在左边前面放了一个\s,这样就行了。。。但我不能总是保证在左边前面会有一个空间

谢谢

/(?:^|[^-])(left)\s*:\s*(\d+|auto)([a-z]{2})?/
将在组1中使用“left”,在组2中使用“700”,在组3中使用“px”获取所需内容

(?:^ |[^-])
=字符串的开头或非连字符

(左)
=单词left(捕获组1)

\s*:\s*
=两边都有可选空格字符的冒号

(\d+| auto)
=一个或多个数字,或字符串“auto”(捕获组2)

([a-z]{2})
=两个字母,例如“px”“em”“pt”(捕获组3-可选)

将在组1中使用“left”,在组2中使用“700”,在组3中使用“px”获取所需内容

(?:^ |[^-])
=字符串的开头或非连字符

(左)
=单词left(捕获组1)

\s*:\s*
=两边都有可选空格字符的冒号

(\d+| auto)
=一个或多个数字,或字符串“auto”(捕获组2)


([a-z]{2})
=两个字母,例如“px”“em”“pt”(捕获组3-可选)

您可以使用CSS解析器来代替正则表达式。这是一个更健壮的解决方案,因为解析器更适合此任务

使用Python和 example.css 向左走 在这个Python脚本中,
prop.name
将返回属性的名称和
prop.value
其值

/(left\s*:\s*)(\d+)?(px)/
输出
您可以使用CSS解析器,而不是使用正则表达式。这是一个更健壮的解决方案,因为解析器更适合此任务

使用Python和 example.css 向左走 在这个Python脚本中,
prop.name
将返回属性的名称和
prop.value
其值

/(left\s*:\s*)(\d+)?(px)/
输出
您使用的是哪种语言/工具。如果是javascript,为什么不与DOM本身交互
document.getElementsById(id).style.left为什么要捕获“左”?它是一个常量——你已经知道它是什么了。你使用的是哪种语言/工具。如果它的javascript是javascript,为什么不与DOM本身交互呢
document.getElementsById(id).style.left为什么要捕获“左”?这是一个常数——你已经知道它是什么了!然而,我遇到了一个问题,有时值是“自动”而不是“0”。。。如何获得自动或d+示例:垂直对齐:顶部;填充顶部:0px;右边填充:0px;垫底:0px;左侧填充:0px;显示:列表项;宽度:700px;位置:绝对位置;顶部:自动;左:自动;高度:1220px@no1uknow查看更新-只需将
(\d+)
转换为带有管道
|
字符的'or'语句,因此它现在是
(\d+| auto)
@no1uknow此更新将匹配“left:autotx;”-我将此作为一种可能性,因为我看不出这是一个问题,它将略微增加表达式的复杂性(并降低可读性),但如果需要的话,我当然可以消除这种可能性。但是,我遇到了一个问题,有时值是“自动”而不是“0”…如何获取自动或d+示例:垂直对齐:顶部;顶部填充:0px;右侧填充:0px;底部填充:0px;左侧填充:0px;显示:列表项;宽度:700px;位置:绝对;顶部:自动;左侧:自动;高度:1220px;@no1uknow查看更新-只需转动
(\d+)
转换为带有管道
|
字符的'or'语句,因此现在是
(\d+| auto)
@no1uknow此更新将匹配“left:autox;”-我将此作为一种可能性,因为我看不出这是一个问题,它将略微增加表达式的复杂性(并降低可读性),但如果需要,我当然可以排除这种可能性
$ ./get-left.py 
left: 700px