gpt4 book ai didi

Python 正则表达式 - 从 CSS 声明中获取所有值

转载 作者:行者123 更新时间:2023-11-28 16:40:44 26 4
gpt4 key购买 nike

我正在使用 Python 开发一个简单的 CSS 解析器。现在我想从这个字符串中提取所有值:"1px solid rgb(255, 255, 255)"。现在我的模式(不起作用)是:"\S+[^rgb]+"。当我将它与字符串 "1px solid rgb(255, 255, 255)" 一起使用时,我得到以下信息:

...
>>> re.findall("\S+[^rgb]+", string)
("1px solid", "rgb(255, 255, 255)")

我希望它成为

("1px", "solid", "rgb(255, 255, 255)")

附言另外,有没有更好的方法来解析 CSS 声明?目前我的模式是 "[\s]?(\S+)[\s]?:[\s]?(.+)[\s]?;"。解析 "color: red;" 给我:

("color", "red")

最佳答案

你可以试试这个:

(\S+)[ ]+(?:(\S+)[ ]+)?(rgb\([^)]+\))

http://regex101.com/r/vA4kH1

编辑:无论您尝试做什么,这都可能不是正确的处理方式,因为 CSS 语法可能无法预测。您可以使用 tinycss,Python CSS 解析器以获得更理智的东西:

http://pythonhosted.org/tinycss/

最后一次编辑...

根据您的解决方案,您正在执行 findAll,它将它们分别放在一个数组中。你只需要 rgb() 在那里一次,忽略空间。这应该适用于值(value)模式,它比你拥有的更干净。还要注意,您不想使用“。”为您的 rgb() 表达式。如果你在同一行有 rgb() 1px rgb() ,默认情况下正则表达式是贪婪的......它会尽可能多地匹配。试试这个:r"(rgb([^)]+))|(\S+))"

关于Python 正则表达式 - 从 CSS 声明中获取所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19599300/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com