从pythons正向lookbehind断言获得第二次匹配

时间:2015-10-02 07:14:59

标签: python regex

我想在python正则表达式的字符串中第一次和第二次出现匹配。

字符串为:QPushButton {background-color: #FF123456;color: #FF654321; border: none;outline: none;}QPushButton:pressed {background-color: #FF123456;}

正则表达式是:(?<=color:)(([\w\ \#])*)

运行代码宽度:

 match = re.search(regEx, string)
 if match:
     match.groups()

我只得到结果('#FF0B9DF7','7')。 我怎样才能得到颜色的第二次出现('#F654321')?

2 个答案:

答案 0 :(得分:1)

使用正确的功能并访问结果。

>>> re.findall(needle, haystack)
[(' #FF123456', '6'), (' #FF654321', '1'), (' #FF123456', '6')]

答案 1 :(得分:0)

正如其他人所指出的,re.findall是使用的方法。但是我也不确定你的搜索模式......你确定要获得一个元组列表,第一个项目包含一个前导空格而第二个项目是每个匹配中的最后一个字符吗?如果你想要的只是颜色字符串,我会这样做:

regEx = r"(?<=color:)\s*(#[0-9A-Za-z]+)"
match = re.findall(regEx, string)
match
['#FF123456', '#FF654321', '#FF123456']

现在我们只有一个字符串列表,它应该比以前更容易使用。