| 豎線在正則中表示或,匹配正則表達式 , 好比re1|re2,等於re1 或者 re2
. 點號, 表示匹配除換行符之外的任意字符,
------------------------------------------------------------------------
* 星號, 匹配 0 次或者屢次前面出現的正則表達式
? 問號, 匹配 0 次或者 1 次前面出現的正則表達式, ?只對前面一個單位生效,好比, roo?n 匹配的結果只能是roon ron,意思就是問號前的O,只能出現1次或者0次
+ 加號, 匹配 1 次或者屢次前面出現的正則表達式
------------------------------------------------------------------------
^ (讀lambada)符號, 表示匹配字符串起始部分
$ 美圓符號, 表示匹配字符串終止部分
------------------------------------------------------------------------
{N} 大括號,匹配 N 次前面出現的正則表達式 , 比方說[0-9]{3},匹配三次數字
{M,N} 匹配M~N次前面出現的正則表達式, 比方說[0-9]{3,5}匹配三到五次數字
------------------------------------------------------------------------
[....] 匹配來自字符集的任意單一字符, 比方說[abc], 匹配來自abc的任意字符
[..x-y..] 匹配來自字符集x-y的任意單一字符, 比方說[A-Za-z],[0-9], 匹配來自abc的任意字符
[^...] 不匹配來自此字符集的任和字符,包括某些範圍
------------------------------------------------------------------------
(*|+?{})? 用於匹配上面頻繁出現/重複出現符號的非貪婪版本(*、+、?、{})
(…) 匹配封閉的正則表達式,而後另存爲子組 ([0-9]{3})?,f(oo|u)bar
------------------------------------------------------------------------
經常使用的記住
一、. 匹配任意除換行符「\n」外的字符;
二、*表示匹配前一個字符0次或無限次;
三、+或*後跟?表示非貪婪匹配,即儘量少的匹配,如*?重複任意次,但儘量少重複;
四、 .*? 表示匹配任意數量的重複,可是在能使整個匹配成功的前提下使用最少的重複。
五、 .+? 表示匹配任意數量的重複,可是在能使整個匹配成功的前提下使用最少的重複。必須有一個字符
六、 ? 問號, 匹配 0 次或者 1 次前面出現的正則表達式, ?只對前面一個單位生效,好比, roo?n 匹配的結果只能是roon ron,意思就是問號前的O,只能出現1次或者0次
如:a.*?b匹配最短的,以a開始,以b結束的字符串。若是把它應用於aabab的話,它會匹配aab和ab
特殊字符的含義
\d 匹配任何十進制數字,與[0-9]一致(\D 與\d 相反,不匹配任何非數值型的數字)
\w 匹配任何字母數字字符,與[A-Za-z0-9_]相同(\W 與之相反)
\s 匹配任何空格字符,與[\n\t\r\v\f]相同(\S 與之相反)
\b 匹配任何單詞邊界(\B 與之相反)
\N 匹配已保存的子組 N(參見上面的(…))
\c 逐字匹配任何特殊字符 c(即,僅按照字面意義匹配,不匹配特殊含義
\A(\Z) 匹配字符串的起始(結束)(另見上面介紹的^和$)
那麼要想匹配上點號. 咱們須要\. 加一個轉義符斜槓
----------------------------------------------------------------
re 模塊的函數介紹
本節將介紹兩個主要的函數/方法——match()和 search(),以及 compile()函數。
re模塊的函數
compile(pattern,flags = 0) 使用任何可選的標記來編譯正則表達式的模式,而後返回一個正則表達式對象
----------------------------------------------------------------
re 模塊函數和正則表達式對象的方法
match(pattern , string , flags=0)
嘗試使用帶有可選的標記的正則表達式的模式來匹配字符串。若是匹配成功,就返回
匹配對象;若是失敗,就返回 None
search(pattern , string , flags=0)
使用可選標記搜索字符串中第一次出現的正則表達式模式。若是匹配成功,則返回匹
配對象;若是失敗,則返回 None
findall(pattern , string [, flags] )
查找字符串中全部(非重複)出現的正則表達式模式,並返回一個匹配列表
finditer(pattern , string [, flags] )
與 findall()函數相同,但返回的不是一個列表,而是一個迭代器。對於每一次匹配,迭
代器都返回一個匹配對象
split(pattern , string , max=0)
根據正則表達式的模式分隔符,split 函數將字符串分割爲列表,而後返回成功匹配的
列表,分隔最多操做 max 次(默認分割全部匹配成功的位置)
-----------------------------------------------------------------
sub(pattern , repl , string , count=0)
使用 repl 替換全部正則表達式的模式在字符串中出現的位置,除非定義 count,不然就
將替換全部出現的位置(另見 subn()函數,該函數返回替換操做的數目)
purge()
清除隱式編譯的正則表達式模式
group(num=0)
返回整個匹配對象,或者編號爲 num 的特定子組
groups(default=None)
返回一個包含全部匹配子組的元組(若是沒有成功匹配,則返回一個空元組)
groupdict(default=None)
返回一個包含全部匹配的命名子組的字典,全部的子組名稱做爲字典的鍵(若是沒有
成功匹配,則返回一個空字典)
-------------------------------------------------------------------------
re.I、re.IGNORECASE 不區分大小寫的匹配
re.L、re.LOCALE 根據所使用的本地語言環境經過\w、\W、\b、\B、\s、\S 實現匹配
re.M、re.MULTILINE ^和$分別匹配目標字符串中行的起始和結尾,而不是嚴格匹配整個字符串自己的起始
和結尾
re.S、re.DOTALL 「.」(點號)一般匹配除了\n(換行符)以外的全部單個字符;該標記表示「.」(點號)
可以匹配所有字符
re.X、re.VERBOSE 經過反斜線轉義,不然全部空格加上#(以及在該行中全部後續文字)都被忽略,除非
在一個字符類中或者容許註釋而且提升可讀性
pat = "title=\".+?\"" 轉移符號\,