参考小程序-》正则表达式

# 小程序-采用正则表达式匹配百度贴吧的图片

# 筛选数据

# 匹配模块 import re import urllib.request

# 获取并打开连接

def getHtml(url):

    page = urllib.request.urlopen(url)

    html = page.read() return html

# 定义筛选图片的函数

# pattern:正则表达式

# string:要匹配的字符串

# flags:控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等

扫描二维码关注公众号,回复: 1019881 查看本文章

# 获取字符串中的所有匹配项

# pattern:正则表达式

# string:要匹配的字符串

"""

match() 决定 RE 是否在字符串刚开始的位置匹配 search() 扫描字符串,找到这个 RE 匹配的位置 findall() 找到 RE 匹配的所有子串,并把它们作为一个列表返回 finditer() 找到 RE 匹配的所有子串,并把它们作为一个迭代器返回

"""

# 匹配表达式书写

# \s 匹配任何空白字符

# \S 匹配任何非空白字符

#\d 匹配任何十进制数;它相当于类 [0-9]。

#\D 匹配任何非数字字符;它相当于类 [^0-9]。

# \w 匹配任何字母数字字符;它相当于类 [a-zA-Z0-9_]。

# \W 匹配任何非字母数字字符;它相当于类 [^a-zA-Z0-9_]。

# * 并不匹配字母字符 "*";相反,它指定前一个字符可以被匹配零次或更多次,而不是只有一次。

# 举个例子,ca*t 将匹配 "ct" (0 个 "a" 字符), "cat" (1 个 "a"), "caaat" (3 个 "a" 字符)等等。

# 正则表达式通常在 Python 代码中都是用这种 raw 字符串表示。

# 常规字符串 "ab*"

# raw字符串 r"ab*"

# 如下表达式匹配

#  1.首先填写r

# 2.问号 ? 匹配一次或零次;你可以认为它用于标识某事物是可选的。

# 3.\section 要匹配的字符串

# r'src="(.+?\.jpg)"pic_ext'

def getImg(html):

    reg = r'src="(.+?\.jpg)" pic_ext'

    imgre = re.compile(reg)

    imglist = re.findall(imgre, html)

    return imglist

#打印结果

html = getHtml("http://tieba.baidu.com/p/2460150866")

result = getImg(html) print(result)

猜你喜欢

转载自my.oschina.net/u/3174681/blog/852506