在HTML中匹配P标签内的文本

2 投票
2 回答
1314 浏览
提问于 2025-04-15 11:54

我想用Python的正则表达式来匹配HTML中每个段落的内容。这些段落里面总是有BR标签,像这样:

<p class="thisClass">this is nice <br /><br /> isn't it?</p>

我现在使用的匹配模式是:

pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>')

然后我用这个:

pattern.findall(html)

来找到所有的匹配项。不过,它只匹配到了我有的28个段落中的两个,看来是因为那两个段落里面没有BR标签,而其他的都有。我哪里做错了?我该怎么修正呢?谢谢!

2 个回答

3

原来答案是要加上 re.S 这个标志,这样“.”这个符号就可以匹配换行符了。

pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.S)

这样做效果很好。

5

我觉得这个问题不是因为<br/>标签导致的,而是因为段落被分成了多行。你可以使用DOTALL模式来解决这个问题:

pattern = re.compile('<p class=\"thisClass\">(.*?)<\/p>', re.DOTALL)

撰写回答