Python學習筆記之正則表示式
阿新 • • 發佈:2019-02-15
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