1. 程式人生 > >Python 學習筆記之:正則表示式

Python 學習筆記之:正則表示式

一、正則表示式的概念

1.使用單個字串來描述匹配一系列符合某個句法規則的字串;

2.是對字串操作的一種邏輯公式;

3.其應用場景為處理文字和資料;

4.正則表示式的執行過程:依次拿出表示式和文字中的字串比較,如果每個字元都能匹配成功,則匹配成功;否則匹配失敗。

二、re模組

1.編寫第一個正則表示式:

(1)import re  #匯入正則表示式模組

(2)正則表示式執行 過程及關鍵函式(涉及兩個物件:規則物件、匹配物件)

           使用compile函式建立正則表示式物件

           使用match或search等簡單方法實現匹配和搜尋

           檢查匹配結果

(3)示例:

import re
pattern = re.compile(r'^q')  #是否以q開頭,r表示為原生字串
result = pattern.match('qazxs')   #如果沒有匹配成功,則會返回空
result.group()  #匹配結果放在元組中
print result.string

三、語法

1.匹配字元

                 字元                               作用

(1)字元匹配

                   .                                    匹配任意字元

                [……]                              中括號中任選一個,可寫為[123456]  或[1-6]含義相同

               \d  /  \D                            匹配數字   /     非數字

              \w  /  \W                            匹配字母數字   /    匹配除過字母數字的內容

              \s   /   \S                            匹配空格          /     匹配除空格外的其他字元

(2)次數匹配

                  *                                    匹配前一個字元0次或多次

                  +                                   匹配前一個字元1次或多次

                 ?                                  匹配前一個字元0次或1次

              {m}  /   {m,n}                   匹配前一個字元m次,或[m,n] 次(少於匹配次數匹配失敗;多餘匹配字數,則只匹配限定個字元)

            *?   /   +?    /   ??             匹配模式變為非貪婪模式(儘可能少匹配字元)(只要前面匹配上,則後面能不匹配就不匹配)

(3)邊界匹配

                ^                                     匹配字串開頭

                $                                    匹配字串結尾

         \A      /     \Z                           指定的字串必須出現在開頭/結尾

                |                                      匹配左右任意一個表示式

            (ab)                              括號中表達式作為一個分組

      \<number>                            引用編號為number的分組匹配到的字串

    (?\P<number>)                      為分組起一個別名

       (?P=name)                          引用別名為name的分組匹配的字串

#(?p<name>)與(?p=name)示例

import re
ma = re.match(r'<([\w]+>)[\w]+</\1',"<book>python</book>")
ma.group()   #輸出存入分組的結果

ma = re.match(r'<(?P<bookname>[\w]+>)[\w]+</(?P=bookname)',"<book>python</book>")
ma.group()

四、re模組相關方法使用

1.search(pattern,str,flags)    #用於查詢模式串在str中第一次出現的位置

#匹配字串中一部分資料 str1 = 'videonum = 1000' ma = re.search(r'\d+',str1) ma.group() # 輸出:1000

2.findall(pattern,str,flags)     # 找到匹配返回所有匹配的列表   

str1 = "c++=100,java=99,python=80" ma = re.findall(r'[\d]+',str1) ma #['100', '99', '80']

3. sub(pattern,repl,string,count=0,flags=0)    #將字串中匹配正則表示式的部分替換為其他值

4.split(pattern,string,maxsplit=0,flags=0)       #根據匹配分割字串,返回分割字串組成的列表

五、re模組相關練習(抓取網頁中的圖片到本地)

1.抓取網頁地址

import urllib2 req = urllib2.urlopen("http://www.imooc.com/course/list") buf = req.read()

2.獲取圖片地址

import re listurl = re.findall(r'http:.+\.jpg',buf)

3.抓取圖片內容儲存到本地   

i = 0 for url in listurl: f = open(str(i)+'.jpg','w') req = urllib2.urlopen(url) buf = req.read() f.write(buf) i+=1

相關推薦

Python 學習筆記表示式

一、正則表示式的概念 1.使用單個字串來描述匹配一系列符合某個句法規則的字串; 2.是對字串操作的一種邏輯公式; 3.其應用場景為處理文字和資料; 4.正則表示式的執行過程:依次拿出表示式和文字中的字串比較,如果每個字元都能匹配成功,則匹配成功;否則匹配失敗。 二、re模

Python學習筆記26表示式

使用 ? 和 * 萬用字元來查詢硬碟上的檔案。? 萬用字元匹配檔名中的 0 個或 1 個字元,而 * 萬用字元匹配零個或多個字元。像 data(\w)?\.dat 這樣的模式將查詢下列檔案: data.dat data

python爬蟲學習筆記6表示式及re庫

正則表示式 語法 常用操作符 re庫 import re re庫的主要功能函式 re.search() re.search(pattern,string,f

python學習筆記9表達式

使用 引入 常用 常用的正則表達式 需要 style pan 表達式 span 一、簡介   正則表達式就是用來查找字符串的;用來匹配一些比較復雜的字符串。   使用正確表達式需要引入re模塊 (regular定期的有規律的)    二、匹配字符串的方法

python學習筆記】用表示式從含中文的網頁中提取資料(含編碼轉換)

目標:用正則表示式從含中文的網頁中提取資料 1、獲得網頁全部資料 1.1思考過程 確定我們要操作的網頁:url = 'http://q.stock.sohu.com/cn/603077/cwzb.shtml' 開啟要操作的網頁:req = urllib2.open(url)

Python爬蟲學習必備知識點表示式模組詳解

一、基礎語法總結 1.1、匹配單個字元 a . d D w W s S [...] [^...] 匹配單個字元(.) 規則:匹配除換行之外的任意字元 In [24]: re.findall("f.o","foo is not fao") Out[24]: ['foo',

Python學習筆記DAY10---關於表示式

        正則表示式用來匹配查詢文字和資料,簡單的說,是一些由字元和特殊符號組成的字串,描述了模式的重複或者表述多個字元。其能按照某種模式匹配一系列有相似特徵的字串。         Python中的正則表

Python學習筆記__11章 表達式

編程語言 Python # 這是學習廖雪峰老師python教程的學習筆記1、正則表\d匹配一個數字\w匹配一個字母或數字\s可以匹配一個空格(也包括Tab等空白符).匹配任意一個字符*表示重復前面的一個字符0次或多次(包括0個)例如:ab* will match ‘a’, ‘ab’, ‘abbbbb.

Python 常用模組re 表示式的使用

re模組用來使用正則表示式。正則表示式用來對字串進行搜尋的工作。我們最應該掌握正則表示式的查詢,更改,刪除的功能。特別是做爬蟲的時候,re模組就顯得格外重要。 1.查詢 1 import re 2 a = re.match("abc","aabccc") 3 b = re.search("abc",

Python爬蟲實戰Requests+表示式爬取貓眼電影Top100

import requests from requests.exceptions import RequestException import re import json # from multiprocessing import Pool # 測試了下 這裡需要自己新增頭部 否則得不到網頁 hea

小白學習js表示式

在JavaScript裡面判斷一個字串是否是電子郵件的格式: 程式碼如下: if(formname.email.value!=formname.email.value.match(/^\w +[@]\w +[.][\w.] +$/)) { alert("您的

機器學習筆記4化(Regularization)

機器學習筆記4:正則化(Regularization) Andrew Ng機器學習課程學習筆記4 過擬合與欠擬合   線性擬合時,有兩種擬合效果不好的情況,分別是過擬合與欠擬合。   過擬合(overfitting),也叫高方差(variance)。主要是擬合曲線過於彎曲,雖然

機器學習筆記05化(Regularization)、過擬合(Overfitting)

說明:文章中的所有圖片均屬於Stanford機器學習課程 (一)過擬合問題(The Problem of Overfitting) 不管是在線性迴歸還是在邏輯迴歸中,我們都會遇到過擬合的問題。先從例子來看看什麼是過擬合。 i.線性迴歸中的過擬合

Python學習(四)表示式

正則表示式 正則表示式: 正則表示式, 又稱正規表示式、正規表示法、正規表示式、規則表示式、常規表示法(英語: Regular Expression, 在程式碼中常簡寫為regex、 regexp或RE) , 是電腦科學的一個概念。 正則表示式使用單個字串來

python學習筆記網路爬蟲(五)表示式

IT Xiao Ang Zai 9月13號 版本:python3.64 程式設計軟體:pycharm 今天我們來學習正則表示式,那麼什麼是正則表示式呢?我們發現,下載一個網頁是容易的,但是要在網頁中找到我們需要的內容,是比較困難的。直接用find()方法是根本不

python核心程式設計第三版(一)學習筆記表示式

注:下面有些內容不全都來源於原著,這些都是通過各方面的資料收集合並的結果。 目錄 1、元字元 3、邊界詞 4、分組詞 一、正則表示式介紹 正則表示式為高階的文字模式匹配、抽取、與/或文字形式的搜尋和替換功

python學習筆記表示式1

正則表示式 正則表示式即RE,我們可以使用正則表示式來匹配字串集,其實正則表示式是一個小型的程式語言。它可以方便我們對於文字任務的操作。 對於python來說,re模組就是正則式操作模組。 元字元:元字元是特殊的字元,普通的字元在正則表示式中都可以用來匹配自己,如正則表示

Python學習筆記表示式

1、import re    # 匯入python正則表示式模組2、正則匹配兩種方式:p = re.compile(r'imooc') # 生成Pattern物件 res = p.match('imooc python') # 呼叫 patern 物件的 matc

Python學習筆記函數與

地址 tee 大於等於 格式 匿名函數 驗證碼 分組 indent 引用 Python函數 Pycharm 常用快捷鍵,例如復制當前行、刪除當前行、批量註釋、縮進、查找和替換。 常用快捷鍵的查詢和配置:Keymap Ctrl + D:復制當前行 Ctrl + E:刪除當前

Python學習 表示式

正則表示式 python 使用正則表示式(re)來進行匹配引擎搜尋 正則表示式是對字串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個“規則字串”   關於正則表示式,必須先學會它的元字元 元字元 : ^  $  *  +&