Python:需要使用正则表达式从html页面中提取标记内容,而不是BeautifulSoup

时间:2011-04-28 06:25:15

标签: python html regex tags substring

我有一个要求,我必须在<raw>标签内提取内容。例如,我需要从此html代码段中提取abcdefgh
 <html><body><raw somestuff>abcd</raw><raw somesuff>efgh</raw></body></html>

我在我的python中使用了这段代码   re.match(r'.*raw.*(.*)/raw.*', DATA)

但这不会返回任何子字符串。我不擅长正则表达式。因此,对此或新解决方案的更正将对我有所帮助。 我不应该使用外部库(由于我公司的某些限制)。

2 个答案:

答案 0 :(得分:6)

贵公司确实需要重新考虑他们的政策。重写XML解析器完全是浪费时间,已经有几个用于Python。有些已包含在stdlib中,因此,如果您import re,您还应该被允许import xml.etree.ElementTreehttp://docs.python.org/library/markup.html中列出的任何其他内容。

你真的应该使用其中之一。没有意义重复所有这些工作。

答案 1 :(得分:0)

使用非贪婪匹配(*?)可以轻松完成此操作,至少对于您的示例。

re.findall(r'<raw[^>]*?>(.*?)</raw>', DATA)