正則模塊:re
import re
print(re.findall('\w','egon 123 + _ - *')) #\w匹配字母數據及下劃線
print(re.findall('\W','egon 123 + _ - *')) #\W匹配非字母數據及下劃線
print(re.findall('\s','egon\t 12\n3 + _ - *')) #\s匹配任意空白字符,等價於[\f\n\r\t]
print(re.findall('\S','egon 123 + _ - *')) #\S匹配任意非空字符
print(re.findall('\d','egon\t 12\n3 + _ - *')) #\d匹配任意數字,等價於[0-9]
print(re.findall('\D','egon\t 12\n3 + _ - *')) #\D匹配任意非數字
print(re.findall('\A','egon\t 12\n3 + _ - *')) #匹配字符串開始
print(re.findall('\n','egon\t 12\n3 + _ - *')) #匹配一個換行符
print(re.findall('\t','egon\t 12\n3 + _ - *')) #匹配一個製表符
print(re.findall('^e','egon\t 12\n3 + _ - *')) #匹配以什麼開頭
print(re.findall('o$','egon\t 12\n3 + _ - * foo')) #匹配以什麼結尾
重複:./?/*/+/.*/*?
.代表任意一個字符
print(re.findall('e.gon','egon\t 12\n3 + _ - * foo'))
print(re.findall('e.gon','egon\t 12\n3 + _ - * foo',re.DOTALL)) #DOTALL表示“.”代表所有
?代表?左邊的字符出現0或1次
print(re.findall('ab?','a ab abb abbb a1b'))
*代表*號左邊的字符出現0次或無窮次
print(re.findall('ab*','a ab abb abbb a1b'))
+代表+號左右的字符出現1次或無窮次
print(re.findall('ab*','a ab abb abbb a1b'))
{m,n}代表左邊的字符出現m到n次
print(re.findall('ab{1,2}','a ab abb abbb a1b'))
.*貪婪匹配
print(re.findall('a.*b','a ab abb abbb a1b'))
*?非貪婪匹配
print(re.findall('a*?b','a ab abb abbb a1b'))
|或者
print(re.findall('mysql(*?:e|d)','aaa mysqle and mysqld'))
()匹配括號內的表達式,也表示一個組
rawstring:
print(re.findall(r'a\\c','a\c alc aBc')) #等於 print(re.findall('a\\\\c','a\c alc aBc'))
[]代表取中括號內任意的一個字符
print(re.findall('a[a-z]','ac alc aBc a-d zxc aaa'))
print(re.findall('a[0-9]','ac alc aBc a-d zxc aaa'))
print(re.findall('a[a-z]','ac alc aBc a-d zxc a+b'))
print(re.findall('a[a-zA-Z]','ac alc aBc a-d zxc aaa'))
print(re.findall('a[-+*/]','ac alc aBc a-d z-c a+a')) #匹配“-”必須放到兩邊
[^aa]代表取除了aa的字符串。
re模塊的使用方法:
re.search #只匹配成功一次,並返回
print(re.search('a[a-z]','ac alc aBc a-d zxc aaa').group())
re.match #只從開頭匹配
print(re.match('a[a-z]','a2 alc aBc a-d zxc aaa').group())
re.split #切分
print(re.split(':','root:x:0:0::/root:/bin:/bash'))
print(re.split(':','root:x:0:0::/root:/bin:/bash',maxsplit=1)) #maxsplit最大切分次數
re.sub #匹配並替換
print(re.sub('root','lzx','root:x:0:0::/root:/bin:/bash',1)) #1代表替換幾次,默認替換所有
print(re.sub('([a-z]+)([^a-z]+)(.*?)([^a-z]+)([a-z])$',r'\5\2\3\4\1','root:x:0:0::/root:/bin:/bash')) #將一個單詞和最後一個單詞互換位置
re.compile #定義一個正則表達式可以重複使用
obj=re.compile('a\d{2}b')
print(obj.findall('a12b a123b abbb'))
正則模塊
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.