正则表达式仅从样式中获得“左”

时间:2013-09-25 14:29:32

标签: regex

这是我的正则表达式,以获得“左”及其值。

/(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放在左前方并且有效...但我不能总是保证左前方会有一个空间。

...谢谢

2 个答案:

答案 0 :(得分:1)

/(?:^|[^-])(left)\s*:\s*(\d+|auto)([a-z]{2})?/

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

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

(left) =单词left(capture group 1)

\s*:\s* =一个带有可选空格字符的冒号

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

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

答案 1 :(得分:0)

您可以使用CSS解析器,而不是使用RegEx。这是一个更强大的解决方案,因为解析器更适合此任务。

使用Python和cssutils

的示例

example.css

.myClass {
    border: 1px solid black;
    margin-left: 100px;
    left: 700px;
    padding-left: 50px;
}

get-left.py

#!/usr/bin/env python

import cssutils
sheet = cssutils.parseFile('example.css')

for rule in sheet:
    if rule.type == rule.STYLE_RULE:
        for prop in rule.style:
            if prop.name == 'left':
                print("{0}: {1}".format(prop.name, prop.value))

在此Python脚本中,prop.name将返回属性的名称,并prop.value返回其值。

输出

$ ./get-left.py 
left: 700px