我在使用Python中的正则表达式逻辑时遇到了一些麻烦。我想写一个正则表达式,如果字符串以子字符串结尾,不返回匹配。最后,我试图排除我在href
标记的<a>
属性中找到的二进制文件的任何链接。 (这是在Scrapy中实施的)
我的问题是,如果我的正则表达式为[^ \t\n\r\f\v]+[\/]?(?<!.pdf)
并且找到指向someDocument.pdf
的链接,则会返回someDocument.pd
如果发现该字符串,我怎么能防止返回任何匹配?
答案 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']