re 正規表示式模組

2021-09-20 17:21:02 字數 2506 閱讀 9285

import re

預定義字符集:

\d:數字[0-9]

\d:非數字[^\d]

\s:空白字元[《空格》\t\r\n\f\v]

\s:非空白字元[^\s]

\w:單詞字元[a-za-z0-9_]

\w:非單詞字元[^\w]

匹配數量:

.:匹配除換行符以外的任何單個字元

*:匹配前乙個字元0或無限次(盡可能多的匹配)

*?:盡可能少的進行匹配前邊的正規表示式

+:匹配前乙個字元1次或無限次(盡可能多的匹配)

+?:盡可能少的進行匹配前邊的正規表示式

?:匹配前乙個字元0次或1次(盡可能多的匹配)

??:盡可能少的進行匹配前邊的正規表示式

:匹配前乙個字元m次

:匹配前乙個字元m至n次(盡可能多的匹配)

?:盡可能少的進行匹配前邊的正規表示式

\:轉義字元

?pr:r表示為正規表示式,對正規表示式匹配到的內容進行命名

函式:match():從字串第乙個字元開始匹配,直到不能匹配到為止,並返回匹配到的字串;如果開頭不能匹配則返回nonetype報錯資訊 

例:a = 'kjksajt3w9#53~59/35(*_***s~r)3'

m = re.match("\w+",a)

m.group()

search():在所有的字串中開始進行匹配,返回匹配到的第乙個結果

例:        

a = 'kjksajt3w9#53~59/35(*_***s~r)3'

m = re.search("***",a)

m.group()

findall():返回所有匹配到的結果;返回乙個列表

例:        

split():用匹配到的字元對字串進行切割;返回乙個列表

例:        

sub():把匹配到的內容進行替換,可以設定替換次數;返回替換後的結果

例:a = 'kjksajt3w9#53~59/35(*_***s~r)3'

re.sub('\d+',"|",a,count=3)

group():返回匹配到的結果,常跟在match和search之後

例:a = 'kjksajt3w9#53~59/35(*_***s~r)3'

re.match("\w+",a).group()

re.search("***",a).group()

compile():把正規表示式進行編譯

例:com = re.compile(r'\d+')  #r表示自然字串,裡邊的字元不會被轉義

e = com.findall('ksdhfkjshdfjkwiu237yyy8w7ye782skdhfkj374ljhfk2')

print(e)

注:可以看到compile編譯後返回乙個物件,在進行大量匹配的時候,compile效率會更高

groups():分組,即只獲取括號內的匹配到的資料;以元組的形式返回

例:f = re.search('(\d+)hfkjshdfjkwiu(\d+)','ksd234234hfkjshdfjkwiu237yyy8w7ye782')

print(f.groups())

groupdict():以命名方式匹配成功後,同時返回名字和匹配到的內容

例:o = re.compile(r'(?p\d+)')

用正則匹配一條nginx日誌:

日誌:66.249.69.131 - - [10/aug/2016:03:20:09 +0800] "get /robots.txt http/1.1" 404 162 "-" "mozilla/5.0 (compatible; googlebot/2.1; +"

匹配規則:

p = r'(?p\d\.\d\.\d\.\d) .* .* \[(?p.*)\] "(?p\w+) (?p[^\s]*) (?p[\w|/\.\d]*)" (?p\d) (?p\d+) "(?p[^\s]*)" "(?p.*)"'

匹配結果:

正規表示式 re模組

re是python中的正規表示式模組,正則也是每個人程式設計之路上必備的基礎技能。這部落格希望即便從來沒接觸過的人看了也會使用正規表示式字元 含義.匹配除了換行符外的任何字元。可以用re.dotall來設定匹配任何字元,包括換行符 丨a丨b 表示正規表示式匹配a或者b 匹配輸入字串開始的位置,如果設...

正規表示式re模組

正規表示式re模組 編譯正規表示式模式,返回乙個物件的模式。可以把那些常用的正規表示式編譯成正規表示式物件,這樣可以提高一點效率。1 compile 格式 re.compile pattern,flags 0 pattern 編譯時用的表示式字串。flags 編譯標誌位,用於修改正規表示式的匹配方式...

re模組正規表示式

正規表示式 1 舉例 re校驗 import re while true phone number input 請輸入手機號碼 strip 需求 11位 開頭13 14 15 19 引數1 正規表示式 引數2 需要過濾的字串 代表 開頭 代表 結束 代表 或 13 14 可以獲取乙個值,判斷是否是1...