Python在两个html标签之间重新编译

时间:2012-12-18 21:09:06

标签: python regex beautifulsoup

这应该是非常直截了当的,但我不能把它弄得一团糟。我想从这个html字符串中获取名称:

  soup =   </ul>
  Brian
  <p class="f">

我试过了:

namePattern = re.compile(r'(?<=</ul>)(.*?)(?<=<p)')
rev.reviewerName = re.findall(namePattern,  str(soup))

namePattern = re.compile(r'</ul>(.*?)<p')

你能告诉我怎么做吗?感谢。

1 个答案:

答案 0 :(得分:3)

默认情况下,.与换行符不匹配。您需要指定re.DOTALL作为re.compile()的第二个参数。

请注意,这将包含新行作为捕获组的一部分。如果您不想这样,可以将它们与\s*明确匹配:

In [5]: re.findall(r'</ul>\s*(.*?)\s*<p', s)
Out[5]: ['Brian']