一、匹配多個字元中的某乙個
正規表示式是區分大小寫的,比如使用正規表示式cat可以匹配文字cat而不能匹配文字cat,如果我們要匹配出含有文字cat的所有結果,而不關心它們大小寫的問題,這是就要需要使用元字元'['和元字元']'來建立乙個字元集合,方括號間的所有字元組成了字元集合,字元集合的匹配結果是能夠與該集合的任意乙個成員相匹配的文字。
例子:文字:cat cat cat
正規表示式:cat
結果:cat cat cat
文字:cat cat cat
正規表示式:[cc][aa][tt]
結果:cat
catcat
使用[cc]便可以匹配c或者c的任意乙個,乙個單獨的''不管字元集合多大,只匹配乙個字元。
二、使用字元集合區間
假如有這樣的乙份文字:包含很多三位數很其他的無關文字,而我們只想把這些三位數匹配出來,使用字元集合可以這樣寫[0123456789][0123456789][0123456789],但這樣寫過於繁瑣,如果要匹配二十六個字母中的任乙個大寫字元,則字元集合裡的字元個數將為26個,如果不區分大小寫,將為52個,寫起來非常繁瑣,所以可以使用元字元'-'來 創造字元區間(0-9, a-z,a-z等)來簡化寫法,如[0-9]=[0123456789],需要注意的是,字元區間的首字元要大於等於尾字元,[0-9]不可以寫成[9-0],並且字元區間可以疊加, 比如[0-9a-z]=[0123456789abcdefghijklmnopqrstuvwxyz],,另外'-'也是乙個特殊的元字元,在'['和『]』之間時,'-'為元字元,但在之外的地方,『-』只是一普通字元,匹配它不需要 用'\'轉義。
例子:文字:123 456 a21
正規表示式:[0-9][0-9][0-9]
結果:123
456 a21
文字:123 456 a21
正規表示式:[a-z][0-9][0-9]
結果:123 456 a21
三、取非匹配
使用字元集合(區間)可以來匹配集合(區間)中的任一字元,而有時我們想匹配除此字元集合(區間)以外的任意字元,這時就要使用元字元'^'來對字元集合(區間)進行取非操作。
文字:123 456 a21 &13
正規表示式:[^0-9][0-9][0-9]
結果:123456 a21
&13
空格不在0-9之間,所以也被匹配了出來。
使用取非匹配需要注意的是,『^』的效果將作用於給定字元集合裡的所有字元或字元區間,而不是緊跟在'^'字元後面的哪乙個字元或者字元區間。
四、匹配特定的字元類別
使用字元區間可以在一定程度上簡化我們的操作,但是當要匹配的字元非常多時寫起來也非常繁瑣,這時我們就可以用一些特殊的元字元來匹配一些特殊的字元集合,比如\d=[0-9]=[0123456789],而將d大寫成d,則代表著取非操作\d=[^0-9]。常見的特殊元字元如下:
元字元 含義
\d 任何乙個數字字元,等價於[0-9]
\d 任何乙個非數字字元,等價於[^0-9]
\w 任意乙個字母(大小寫均可),數字或下劃線,等價於[a-za-z0-9_]
\w 任意乙個非字母數字或者非下劃線,等價於[^a-za-z0-9_]
例子:文字:1234 12345 a1b2c3 abcdef c2d3f2 a2d3ff
正規表示式:\w\d\w\d\w\d
結果:1234 12345 a1b2c3 abcdef c2d3f2 a2d3ff
正規表示式05 匹配開頭結尾
字元功能 匹配字串開頭 匹配字串結尾 coding utf 8 import re email list xiaowang 163.com xiaowang 163.comheihei com.xiaowang qq.com for email in email list ret re.match ...
正規表示式2 匹配單個字元
正規表示式可以只包含純文字 1 有多個匹配結果 絕大多數正規表示式引擎的預設行為是只返回第1個匹配結果,但是根據具體的實現,提供了不同的方法把所有的匹配結果全部找出來。2 字母的大小寫問題 正規表示式是區分大小寫的。具體實現可通過標誌來強制進行不區分大小寫。正規表示式的特殊字元用於給出要搜尋的東西。...
正規表示式1(匹配單個字元)
函式功能 preg grep 執行搜尋並以陣列形式返回匹配結果 findall 查詢所有子串並以列表形式將其返回 finditer 查詢所有子串並以迭代器形式將其返回 match 在字串的開頭執行正規表示式搜尋 search 搜尋字串中的所有匹配項 split 將字串轉換成列表,在模式匹配的地方將其...