單字修飾符:
1. . 匹配任意字元,除了換行符
2. 用來表示一組字元,單獨列出:[abc] 匹配 『a』,『b』或』c』
3. \d 匹配任意數字,等價於 [0-9].
4. \d 匹配任意非數字
5. \w 匹配字母數字及下劃線
6. \w 匹配非字母數字及下劃線
7. \s 匹配任意空白字元,等價於 [\t\n\r\f].
8. \s 匹配任意非空字元
數量修飾符
1.* 匹配0個或多個的表示式
2.+ 匹配1個或多個的表示式
3.? 匹配0個或1個由前面的正規表示式定義的片段
4. 前面字元出現m次
5. 前面字元出現至少m次
6.前面字元出現m~n次
邊界修飾符
1.^ 以…開始
2.$ 以…結尾
eg:『^abc』 匹配以abc開頭
『abc$』 匹配以abc結尾
分組修飾符
1.() 匹配括號內的表示式,也表示乙個組
2.\1 \2 匹配第1、2個分組的內容
eg:
(.
*):(.*
) \1 \2
貪婪模式非貪婪模式
貪婪模式:在整個表示式匹配成功的前提下,盡可能多的匹配 ( * );
非貪婪模式:在整個表示式匹配成功的前提下,盡可能少的匹配 ( ? );
python裡數量詞預設是貪婪的。
示例一 : 源字串:abbbc
使用貪婪的數量詞的正規表示式 ab* ,匹配結果: abbb。
* 決定了盡可能多匹配 b,所以a後面所有的 b 都出現了。
使用非貪婪的數量詞的正規表示式ab*?,匹配結果: a。
即使前面有 *,但是 ? 決定了盡可能少匹配 b,所以沒有 b。
模式修飾符示例二 : 源字串:aatest1
bbtest2
cc 使用貪婪的數量詞的正規表示式:.*
匹配結果:test1
bbtest2
這裡採用的是貪婪模式。在匹配到第乙個「
」時已經可以使整個表達
式匹配成功,但是由於採用的是貪婪模式,所以仍然要向右嘗試匹配,
檢視是否還有更長的可以成功匹配的子串。匹配到第二個「
」後, 向右再沒有可以成功匹配的子串,匹配結束,匹配結果為
「test1
bbtest2
」 使用非貪婪的數量詞的正規表示式:.*?
匹配結果:test1
正規表示式二採用的是非貪婪模式,在匹配到第乙個「
」 時使整個表示式匹配成功,由於採用的是非貪婪模式,
所以結束匹配,不再向右嘗試,匹配結果為「test1
」。
regular expression
1.re.s 單行模式
2.re.m 多行模式
3.re.i 忽略大小寫
使用步驟:
re.complie()
compile 函式用於編譯正規表示式,生成乙個正規表示式pattern物件
pattern物件 = re.compile(正規表示式)
pattern物件.find all(html)
findall()
在字串中找到正規表示式所匹配的所有子串,並返回乙個列表,如果沒有找到匹配的,則返回空列表。
Python正則使用示例
使用python從一段文字中使用正則匹配自己需要的文字,如果使用search,只會進行一次匹配,group 0 裡面的內容是全匹配,group 1 裡面的內容是括號裡面的子正則。如果需要全部匹配就使用findall,我這裡的就是全匹配,返回的是乙個列表,每一項內容就是括號裡的字正則匹配內容。usr ...
python正則re使用
1 import re 將正規表示式編譯成pattern物件 pattern re.compile r hello re.i 使用pattern匹配文字,獲得匹配結果,無法匹配時將返回none match pattern.match hello world if match 使用match獲得分組資...
python正則的使用
python的正則是通過re模組的支援 匹配的3個函式 match 只從字串的開始與正規表示式匹配,匹配成功返回matchobject,否則返回none re.match pattern,string,flags 0 flags 標誌位,用於控制正規表示式的匹配方式,如 是否區分大小寫,多行匹配等等...