Python正则表达式不返回匹配项

时间:2016-08-29 17:30:50

标签: python regex beautifulsoup

我正在使用Python学习网页报废。我试图从一个流行的金融网站的网站地图中提取所有链接。

<category>
    <text>
        <xsl:text>$course$/</xsl:text>
        <xsl:value-of select="/office:document/office:meta/dc:title" />               
    </text>
</category>

此代码一无所获。虽然站点中存在许多具有上述匹配的链接。 样本:/ india / stockmarket / pricechartquote / A

1 个答案:

答案 0 :(得分:2)

您是否尝试过检查此正则表达式是否与网址提供的部分相匹配 - 它不会:

>>> import re
>>>
>>> pattern = re.compile("^(/india/stockmarket/pricechartquote/)*$")
>>> pattern.search("/india/stockmarket/pricechartquote/A")
>>>

相反,你的意思是在pricechartquote/匹配之后有最后一部分,例如,一个或多个大写字母:

>>> pattern = re.compile(r"^/india/stockmarket/pricechartquote/[A-Z]+$")
>>> pattern.search("/india/stockmarket/pricechartquote/A")
<_sre.SRE_Match object at 0x109240098>

请调整[A-Z]+部分,具体取决于您希望在pricechartquote/之后看到的字符集类型。

另请注意,您不必检查字符串的开头和结尾,并且最好使用部分网址匹配:

for link in bsObj.find_all("a", href=re.compile(r"/india/stockmarket/pricechartquote/")):
    # ...