Python正则表达式 - 根据周围模式选择值

时间:2011-12-08 22:13:46

标签: python regex scrapy

我使用Scrapy抓取了一个网页,需要从某些对象中提取背景颜色。因为inline-css不是DOM的一部分,或者我读过,所以我需要创建一个正则表达式来扩充我当前的XPath并在对象的style属性中选择所需的值。我当前的XPath返回整个样式值,如下所示:

背景:#80FF00;高度:48像素;宽度:98px;颜色:#FFFFFF

我需要一个仅选择背景十六进制值的正则表达式(即:#80FF00)。我不需要验证值是否正确格式化(即([0-9A-Fa-f]{3}|[0-9A-Fa-f]{6}))\b),只需要抓住'background:'和以下';'之间的任何内容。

我是新手写正则表达式并感谢他们的帮助。

1 个答案:

答案 0 :(得分:3)

以下正则表达式应该做你想要的,你想要抓取的东西将在第一个捕获组中:

background:(.*?);

在Python中

background = re.search(r'background:(.*?);', some_string).group(1)

.匹配任何字符,*表示重复前一个元素任意次,?使其成为一个惰性匹配,因此它将匹配尽可能少的字符。这是必要的,以确保它不捕获多个分号,只停在最后一个分号。另一种选择是background:([^;]*),因为[^;]只匹配非分号字符。