Python学习笔记之正则表达式

1、import re    # 导入python正则表达式模块

2、正则匹配两种方式:

p = re.compile(r'imooc')    # 生成Pattern对象
res = p.match('imooc python')    # 调用 patern 对象的 match 方法匹配字符串,结果返回一个 match 对象或 None
print (res.group())    # group() 从对象获取匹配的值  imooc
print (res.span())    # span() 从对象获取匹配的起始位置  (0, 5)
res = re.match(pattern, str )    # 在字符串中从头开始匹配,结果返回一个 match 对象或 None
res = re.search(pattern, str)    # 在字符串中匹配第一个子串,结果返回一个 search 对象或 None
res = re.findall(pattern, str)    # 查找所有子串,结果返回一个List,所有匹配到的子串
re.sub(pattern, repl, str, count = 0)    # 匹配替换,repl替换字符串,可以是一个函数对象,count匹配次数
re.split(pattern, str, maxsplit = 0)    # 根据匹配分割字符串,返回一个List

3、正则表到式语法:

.          #匹配任意字符
[abc]   #匹配任意字符集abc中的任一个字符
\d       #匹配数字                                \D      #匹配非数字
\s        #匹配空白字符                         \S      #匹配非空白字符
\w       #匹配字符[a-zA-Z0-9]             \W      #匹配非[a-zA-Z0-9]字符
*         #匹配0或多次
+        #匹配1或多次
?         #匹配最多一次
{m}      #匹配m次                               {m, n}  #匹配m到n次
*?        #非贪婪模式,尽可能少匹配字符,出现了也不匹配
+?       #非贪婪模式,尽可能少匹配字符,只匹配一次,再出现就不匹配了
??        #非贪婪模式,尽可能少匹配字符,最多一次,最少不匹配
^         #匹配开头^.
$         #匹配结尾.$
\A       #指定以以某字符串开头\A...     \Z      #指定以某字符串结尾\Z...
|          #匹配左右任意一个表达式

(a|b)   #括号中的表达式作为分组

4、正则表达式练习:(简单爬虫,爬取慕课网网站图片并保存在本地,Python版本3.0以下)

# 1.抓取网页
# 2.获取图片地址

# 3.抓取图片内容并保存到本地

# -*- coding:utf-8 -*-
import urllib2
import re

#请求网页并读取
res = urllib2.urlopen('http://www.imooc.com/course/list').read()
#筛选出图片地址,使用正则表达式匹配符合条件的网址
url_list = re.findall(r'//.+?\.jpg', res)
url_map = map(lambda x: 'http:'+x, url_list[::2])
url_set = set(url_map)

#获取图片写入到jpg文件
i = 0
for url in url_map:
    f = open('imooc_img/'+str(i)+'.jpg', 'w')
    res = urllib2.urlopen(url).read()
    f.write(res)
    i += 1


猜你喜欢

转载自blog.csdn.net/qq_37509235/article/details/80425455
今日推荐