python正则表达式组

时间:2011-08-07 09:16:50

标签: python regex

我是python的新手,我试图理解我是否循环正则表达式组,例如:

reobj = re.compile('<a href="(.*?)">(.*?)</a>', re.IGNORECASE)
result = reobj.findall(body)

如何从正则表达式循环2组? 谢谢!

2 个答案:

答案 0 :(得分:6)

你真的在shell中试过吗?

>>> body = """<a href="http://foo.com">Foo</a><br><a href="http://bar.com">Bar</a>"""
>>> reobj = re.compile('<a href="(.*?)">(.*?)</a>', re.IGNORECASE)
>>> result = reobj.findall(body)
>>> result
[('http://foo.com', 'Foo'), ('http://bar.com', 'Bar')]

因此findall的结果只是包含匹配组的元组列表。如果你不知道如何遍历列表,那么你需要做一个介绍性的Python教程。

[插入关于如何不使用正则表达式解析HTML的标准咆哮......]

答案 1 :(得分:1)

我需要的答案是:

reobj = re.compile('<a href="(.*?)">(.*?)</a>', re.IGNORECASE)
result = reobj.findall(body)


for link in result:
        print link[0] + link[1]