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

时间:2009-05-28 22:16:14

标签: python html regex

我想使用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 个答案:

答案 0 :(得分:5)

我不认为它因<br/>而失败,而是因为段落分布在多行中。使用DOTALL模式解决此问题:

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

答案 1 :(得分:3)

事实证明,答案是将re.S包含为允许“。”的标志。字符也匹配换行符。

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

这很有效。