Skip to main content
 首页 » 编程设计

python之正则表达式 : extract text between two markers

2024年08月27日29三少

我正在尝试编写一个 Python 解析器来从 html 页面中提取一些信息。

它应该从 <p itemprop="xxx"> 之间提取文本和 </p>

我使用正则表达式:

m = re.search(ur'p>(?P<text>[^<]*)</p>', html) 

但是如果它们之间是另一个标签,它就无法解析文件。例如:

<p itemprop="xxx"> some text <br/> another text </p> 

据我了解[^<]仅对一个符号异常(exception)。如何写“除了 </p> 之外的所有内容”?

请您参考如下方法:

您可以使用:

m = re.search(ur'p>(?P<text>.*?)</p>', html) 

这是一个惰性匹配,它会匹配直到 </p> 之前的所有内容.您还应该考虑使用像 BeautifulSoup 这样的 HTML 解析器。安装后,可以与 CSS Selectors 一起使用像这样:

from bs4 import BeautifulSoup 
soup = BeautifulSoup(html) 
m = soup.select('p[itemprop="xxx"]')