python 正则表达式分组

-2 投票
2 回答
4518 浏览
提问于 2025-04-16 23:03

我刚接触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]

撰写回答