我用Pythex测试了我的正则表达式,它的工作原理如下:
HTML:
Something Very Important (SVI) 2013 Sercret Information, Big Company
Name (LBCN) Catalog Number BCN2013R18 and BSSN 3-55564-789-Y, was
developed as part of the SUP 2012 Something Task force was held in
conjunction with <a href="http://justaURL.com">*SEM 2013</a>, the second joint conference on study of
banana hand grenades and gorilla tactics (Association of Ape Warfare
Studies) interest groups BUDDY HOLLY and LION KING. It is comprised of
one hairy object containing 750 gross stories told in the voice of
Morgan Freeman and his trusty sidekick Michelle Bachman.
我的正则表达式:
,[\s\w()-]+,
当与Pythex一起使用时,它会选择我正在寻找的区域,该区域位于段落中的2个逗号之间:
非常重要的东西(SVI)2013年秘密信息,大 公司名称(LBCN)目录号BCN2013R18和BSSN 3-55564-789-Y,是SUP 2012 Something Task的一部分 力与&lt; a href =“http://justaURL.com”&gt; * SEM一起举行 2013&lt; / a&gt;,第二个关节 香蕉手榴弹和大猩猩战术研究会议 (Ape Warfare Studies协会)利益集团BUDDY HOLLY和 狮王。它由一个毛茸茸的物体组成,包含750毛 在摩根弗里曼的声音中讲述的故事和他值得信赖的伙伴 米歇尔巴赫曼。
然而,当我使用BeautifulSoup的文本正则表达式时:
print HTML.body.p.find_all(text=re.compile('\,[\s\w()-]+\,'))
我退回了这个而不是逗号之间的区域:
[u'Something Very Important (SVI) 2013 Sercret Information, Big Company Name (LBCN) Catalog Number BCN2013R18 and BSSN 3-55564-789-Y, was developed as part of the SUP 2012 Something Task force was held in conjunction with ']
我也试过逃避逗号,但没有运气。美丽的汤只想返回整个<p>
而不是我指定的正则表达式。此外,我注意到它返回段落,直到中间的链接。这是我如何使用BeautifulSoup的问题,还是这是一个正则表达式问题?
答案 0 :(得分:3)
BeautifulSoup使用正则表达式搜索匹配的元素。整个文本节点与您的搜索匹配。
然后你仍然必须提取你想要的部分; BeautifulSoup不会为你做这件事。你可以在这里重用你的正则表达式:
expression = re.compile('\,[\s\w()-]+\,')
textnode = HTML.body.p.find_all(text=expression)
print expression.search(textnode).group(0)