首页 文章

Python,正则表达式和html:在线匹配最终标签

提问于
浏览
1

我对python贪婪/不贪婪的角色感到困惑 .

“给定多行html,返回每行的最终标记 . ”

我认为这是正确的:

re.findall('<.*?>$', html, re.MULTILINE)

我很烦,因为我期待一个单独的标签列表,如:

"</html>", "<ul>", "</td>".

我的口袋参考说 *? wil "match 0 or more times, but as few times as possible."

那么为什么我会得到“贪婪”的比赛,比如一些(但不是全部)比赛中有多个?

1 回答

  • 1

    你的问题源于你有一个行尾锚('$') . 非贪婪匹配的工作方式是引擎首先在行上搜索第一个无约束模式(在您的情况下为“<”) . 然后它会查找第一个'>'字符(你已经约束了,使用$ anchor,它位于该行的末尾) . 因此,在这种情况下,非贪婪与贪婪没有任何不同 .

    由于你无法从你的RE中删除'$'(你正在寻找一行的最终标签),你需要采取不同的方法......请参阅@ Mark的答案 . '<[^> <] *> $'可以使用 .

相关问题