正则表达式:匹配2个项目之间的文本

时间:2013-08-04 04:40:39

标签: python html regex parsing

我如何匹配以下代码以获得两个字符串:

  1. 第三个关闭标签的标题
  2. 第6个标题到第6个关闭标签。(等等......第3个标题到第9个关闭标签......等等)
  3. 这是要匹配的字符串:

    title
    <a></a>
    content here
    <a></a>
    text...
    <a></a>
    text...
    title 
    <a></a>
    <a></a>
    <a></a>
    

    我尝试使用。*但这会将标题中的文字捕获到最后一个标记。

2 个答案:

答案 0 :(得分:1)

from re import findall, DOTALL

text = '''
title
<a></a>
content here
<a></a>
text...
<a></a>
text...
title 
<a></a>
<a></a>
<a></a>
'''
print findall(r'title.*?</a>.*?</a>.*?</a>', text, DOTALL)

给出

['title\n<a></a>\ncontent here\n<a></a>\ntext...\n<a></a>', 'title \n<a></a>\n<a></a>\n<a></a>']

您也可以使用

print findall(r'title(?:.*?</a>){3}', text, DOTALL)

答案 1 :(得分:0)

一般来说*是贪婪的,而*?是不情愿的。尝试将.*替换为.*?