我如何匹配以下代码以获得两个字符串:
这是要匹配的字符串:
title
<a></a>
content here
<a></a>
text...
<a></a>
text...
title
<a></a>
<a></a>
<a></a>
我尝试使用。*但这会将标题中的文字捕获到最后一个标记。
答案 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)
一般来说*
是贪婪的,而*?
是不情愿的。尝试将.*
替换为.*?
。