正则表达式,负面回顾,防止匹配

时间:2014-03-31 22:46:22

标签: python regex assertion

我在使用Python中的正则表达式逻辑时遇到了一些麻烦。我想写一个正则表达式,如果字符串以子字符串结尾,返回匹配。最后,我试图排除我在href标记的<a>属性中找到的二进制文件的任何链接。 (这是在Scrapy中实施的)

我的问题是,如果我的正则表达式为[^ \t\n\r\f\v]+[\/]?(?<!.pdf)并且找到指向someDocument.pdf的链接,则会返回someDocument.pd

如果发现该字符串,我怎么能防止返回任何匹配?

1 个答案:

答案 0 :(得分:0)

如果您使用scrapy,那么您可能需要在正则表达式的末尾添加$

[^ \t\n\r\f\v]+[\/]?(?<!\.pdf)$

如果有任何方法可以使用项目中的BeautifulSoup,请尝试:

htmls = '''<a href="adssad/asdasd/asd.pdf">M</a> <a href='asdasdasdas/asdasd/asdasd.doc'></a>'''
soup = BeautifulSoup(htmls)
for link in soup.findAll("a", {"href":re.compile("(?<!\.pdf)$")}):
    print link['href']