正規表示式整理

2021-08-15 04:20:26 字數 1566 閱讀 1066

/d:匹配乙個數字,data

/w:匹配乙個數字或乙個單詞,word

/s:匹配乙個空格(包含tab),space

/w:匹配所有非單詞和下劃線

句點.匹配除新行符 (`r`n) 序列外的任何單個字元,*表示任意個,+表示至少乙個,?表示0個或乙個,表示n個,表示m~n個。

句點星號模式 .* 是匹配範圍最廣的模式之一, 因為它可以匹配零個或多個任意字元 (除了新行符: `r 和 `n). 例如, abc.*123 可以匹配 abcanything123, 也能匹配 abc123.

為了使正規表示式匹配的範圍自定義,可以使用,將想要匹配的所有符號寫在中,比如[0-9a-za-z\_]匹配乙個數字或字母或者下劃線。

關於正規表示式中的兩次轉義,一次轉義是轉為特殊符號,一次轉義是轉義為字串,當加上r之後,已經預設轉為字串,因此只需要一次轉義。

使用正規表示式的妙處:

1.可以檢查輸入字串是否正確--檢測匹配問題

ifre.match(r'正規表示式', test):

print('ok')

test是輸入的字串。

2.利用正規表示式的split方法來劃分字串,劃分標準可以使用正規表示式指定。

re.split(r'\s+', 'a b   c')    ---- ['a', 'b', 'c']
3.從字串中提取分組groups,用括號()表示分組

m = re.match(r'^(\d)-(\d)$', '010-12345')
>>> m.group(0)

'010-12345'

>>> m.group(1)

'010'

>>> m.group(2)

'12345'

注意:

1.關於貪婪匹配,加個?就可以實現非貪婪匹配;

2.如果乙個正規表示式要重複使用幾千次,出於效率的考慮,我們可以預編譯該正規表示式,使用compile先編譯正規表示式。

re.match()與re.search()的區別:re.match()總是從字串的開頭開始匹配,而re.seach()函式將對整個字串進行搜尋,並返回第乙個匹配的字串的match物件。例如:

in:print(re.match(r'([a-za-z]+)\.','hello,world.' ))

out:none

in:print(re.search(r'([a-za-z]+)\.','hello,world.' ))

out:<_sre.sre_match object; span=(6, 12), match='world.'>

3.正規表示式中的圓括號()和大方框的區別:大方框是組成了乙個匹配範圍,可以在這個範圍後面加上?表示範圍內選擇0個或1個字元,+表示匹配當中至少乙個字元等等,例如[\+\-]?可以匹配『+』和『-』和『 』;圓括號()是乙個分組,這個分組中的正規表示式是乙個統一的整體,可以表示出這個組的構成,比如(\+\-)?可以匹配『+-』和『 』。一般這兩種可以搭配使用。

正規表示式整理

常見正規表示式驗證 d 整數 d 正整數 d 負整數 a za z0 9 數字和字元 不包含標點 u4e00 u9fa5 中文 0 9 0 9 浮點數 a za z0 9 a za z0 9 a za z0 9 郵箱位址 1 9 0 9 0 9 0 9xx 簡單判斷15位或18位身份證 1 9 0 ...

整理正規表示式

控制開頭 控制結尾 轉義序列 n新行 r回車 t製表符 a z 匹配所有的小寫字母 a z 匹配所有的大寫字母 a za z 匹配所有的字母 0 9 匹配所有的數字 0 9 匹配所有的數字,句號和減號 f r t n 匹配所有的白字元 前面曾經提到 表示字串的開頭,但它還有另外乙個含義。當在一組方括...

正規表示式整理

校驗數字的表示式 1.數字 0 9 2.n位的數字 d 3.至少n位的數字 d 4.m n位的數字 d 5.零和非零開頭的數字 0 1 9 0 9 6.非零開頭的最多帶兩位小數的數字 1 9 0 9 0 9 7.帶1 2位小數的正數或負數 d d 8.正數 負數 和小數 d d 9.有兩位小數的正實...