1

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

  1. 第三个结束标签的标题
  2. 第二个标题到第 6 个关闭标签。(依此类推...第三个标题到第 9 个关闭标签...等)

这是要匹配的字符串:

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

我尝试使用 .* 但这捕获了从标题到最后一个标签的文本。

4

2 回答 2

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)
于 2013-08-04T04:54:20.823 回答
0

一般*是贪婪,而*?不愿意。尝试替换.*.*?.

于 2013-08-04T04:41:42.850 回答