我想使用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标签而其余部分都没有。我究竟做错了什么?我该怎么办才能修复它?谢谢!
答案 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)
这很有效。