Python正则表达式和HTML

2024-04-26 00:08:34 发布

您现在位置:Python中文网/ 问答频道 /正文

首先,我痛苦地意识到用regex解析HTML不是“好形式”。但是,我处理的是格式不好的HTML,当使用lxml等工具进行解析时无法验证。你知道吗

我的目标是只选择包含br元素的span元素。以下是我的尝试:

设置样本输入

import re
xx= '<div> <span>123</span> <span>456 <br> 789</span>  </div>'

这正确地标识了两个跨距,但仅当存在。我不明白为什么会这样。你知道吗

re.findall('<span>.*?</span>', xx)
['<span>123</span>', '<span>456 <br> 789</span>']    

我本以为这只会选择带有br标记的span,但是相反,它会从第一个span选择开始span标记,从最后一个span选择结束span标记,只选择一个条目。你知道吗

re.findall('<span>.*?<br>.*?</span>', xx)
['<span>123</span> <span>456 <br> 789</span>']

请解释为什么我看到这种行为。你知道吗


Tags: 工具标记brdivre元素html格式