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...