使用正则表达式时获得不正确的匹配

时间:2015-12-14 10:28:14

标签: python regex beautifulsoup html-parsing

我试图查找链接是否包含" .pdf"在它的结尾。

我正在跳过#34; .pdf"之前的所有角色。在正则表达式中使用[/w/-]+,然后查看它是否包含" .pdf"。我是正则表达式的新手。

代码是:

import urllib2
import json
import re
from bs4 import BeautifulSoup
url = "http://codex.cs.yale.edu/avi/os-book/OS8/os8c/slide-dir/"
response = urllib2.urlopen(url)
soup = BeautifulSoup(response.read())
links = soup.find_all('a')
for link in links:
    name = link.get("href")
    if(re.match(r'[\w/.-]+.pdf',name)):
        print name

我希望将名称与以下类型的链接匹配:

  

PDF-DIR / ch1.pdf

2 个答案:

答案 0 :(得分:3)

您不需要正则表达式。使用CSS selector检查href 是否以pdf 结尾:

for link in soup.select("a[href$=pdf]"):
    print(link["href"])

答案 1 :(得分:1)

我对您的代码做了一些小改动

for link in links:
name = link.get("href")
if(re.search(r'\.pdf$',name)):
    print name

输出如下:

  

PDF-DIR / ch1.pdf
  PDF-DIR / ch2.pdf
  PDF-DIR / ch3.pdf
  PDF-DIR / ch4.pdf
  PDF-DIR / ch5.pdf
  PDF-DIR / ch6.pdf
  PDF-DIR / ch7.pdf
  PDF-DIR / ch8.pdf
  PDF-DIR / ch9.pdf
  PDF-DIR / ch10.pdf
  PDF-DIR / ch11.pdf
  PDF-DIR / ch12.pdf
  PDF-DIR / ch13.pdf
  PDF-DIR / ch14.pdf
  PDF-DIR / ch15.pdf
  PDF-DIR / ch16.pdf
  PDF-DIR / ch17.pdf
  PDF-DIR / ch18.pdf
  PDF-DIR / ch19.pdf
  PDF-DIR / ch20.pdf
  PDF-DIR / ch21.pdf
  PDF-DIR / ch22.pdf
  PDF-DIR / appA.pdf
  PDF-dir / appC.pdf