python 正则表达式分组
我刚接触Python,想弄明白怎么循环处理正则表达式中的分组,比如:
reobj = re.compile('<a href="(.*?)">(.*?)</a>', re.IGNORECASE)
result = reobj.findall(body)
我该怎么循环处理正则表达式中的两个分组呢?谢谢!
2 个回答
6
你真的在命令行里试过这个吗?
>>> 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
我需要的答案是:
reobj = re.compile('<a href="(.*?)">(.*?)</a>', re.IGNORECASE)
result = reobj.findall(body)
for link in result:
print link[0] + link[1]