我怎么会下面的代码相匹配之间的匹配文本获得两个字符串:正则表达式:2项
- 标题第三关闭标签
- 第二个冠军到第6关闭标签(等上...第三名标题9日关闭标签...等)
这里是要匹配的字符串:我尝试使用
title
<a></a>
content here
<a></a>
text...
<a></a>
text...
title
<a></a>
<a></a>
<a></a>
。 *但是这会将标题中的文本捕获到最后一个标记。
我怎么会下面的代码相匹配之间的匹配文本获得两个字符串:正则表达式:2项
这里是要匹配的字符串:我尝试使用
title
<a></a>
content here
<a></a>
text...
<a></a>
text...
title
<a></a>
<a></a>
<a></a>
。 *但是这会将标题中的文本捕获到最后一个标记。
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)
一般*
是贪婪的,而*?
是不愿意的。尝试用.*?
替换.*
。
。*?将只会从标题获得 – Archetype2
是的,因此您可以将其应用(按顺序或嵌套)三次以获得您的结果。 Matthew Schinckel的第二个评论也可能派上用场。 – Hyperboreus
我希望你没有使用正则表达式解析HTML! http://stackoverflow.com/a/1732454/188 –
这是一个6倍的嵌套锚元素?这个页面在做什么? – user2357112
@Matthew,代码格式永远不会改变,所以我没有看到在这种情况下使用正则表达式来解析html的任何错误... – Archetype2