re庫
阿新 • • 發佈:2020-07-09
re.search() 在一個字串中搜索匹配正則表示式的第一個位置,返回match物件
re.match() 在一個字串的開始位置匹配正則表示式,返回match物件
re.findall() 搜尋字串,以列表的形式返回全部能匹配的子串
re.split() 將一個字串按照正則表示式匹配的結果進行分割,返回列表型別
re.finditer() 搜尋字串,返回一個匹配的迭代型別,每個迭代元素是match物件
re.sub() 在一個字串中替換所有匹配正則表示式的子串,返回替換後的字串
regex = re.compile(pattern,flags=0)
此時的regex是一個正則表示式
例:
content = 'Hello, I am Jerry, from Chongqing, a montain city, nice to meet you……' regex = re.compile('\w*o\w*') y = regex.match(content) print(y) print(type(y)) print(y.group()) print(y.span()) # <_sre.SRE_Match object; span=(0, 5), match='Hello'> # <class'_sre.SRE_Match'> # Hello # (0, 5)
re.search(pattern,string,flags=0)
pattern 正則表示式的字串或原生字串表示 string 帶匹配的字串 flags 正則表示式使用時的控制標記
flags的常用標記:
re.I re.IGNORECASE 忽略正則表示式的大小寫,[A-Z]能夠匹配小寫字元 re.M re.MULTLINE 正則表示式中的^操作符能夠將給定字串的每行當做匹配開始 re.S re.DOTALL 正則表示式中的.操作符能夠匹配所有字元,預設匹配除\n外的所有字元
例:
1 import re 2 match1 = re.search(r'[1-9]\d{5}','BIT 100081 TSU100084') 3 if match1: 4 print(match1.group(0)) 5 6 #結果:100081
re.match(pattern,string,flags=0)
例:
1 import re 2 match2 = re.match(r'[1-9]\d{5}','BIT 100081') 3 if match2: 4 print(match2.group(0)) 5 6 #print(match2.group(0)),注意,如果這裡不直接判斷re.match()返回的物件是否為空,會報錯, 7 #因為這裡的match2並沒有從這個字串的開始部分匹配到目標字串,所以返回的match2物件沒有group這個引數 1 #對上面的程式碼進行修改 2 match3 = re.match(r'[1-9]\d{5}','100081 BIT') 3 if match3: 4 print(match3.group(0)) 5 6 #輸出:'100081'
re.findall(pattern,string,flags=0)
例:
1 import re 2 ls = re.findall(r'[1-9]\d{5}','BIT100081 CLS100084') 3 print(ls)#['100081','100042'],將所有匹配的輸出 4 for i in ls: 5 print(i) 6 #100081 7 #100084
re.split(pattern,string,maxsplit,flags=0)
例:
# maxsplit最大分割數,剩餘部分作為最後一個元素輸出 1 import re 2 m = re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084') 3 #re.finditer返回的是迭代型別 4 #如果此時執行print(m),輸出是<callable_iterator object at 0x0000024203F83E10> 5 for i in m: 6 print(i) 7 #輸出: 8 #<re.Match object; span=(3, 9), match='100081'> 9 #<re.Match object; span=(13, 19), match='100084'> 10 #正確的輸出格式 11 for m in re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084'): 12 if(m): 13 print(m.group(0)) 14 #100081 15 #100084
re.finditer(pattern,string,maxsplit,flags=0)
例:
1 import re 2 m = re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084') 3 #re.finditer返回的是迭代型別 4 #如果此時執行print(m),輸出是<callable_iterator object at 0x0000024203F83E10> 5 for i in m: 6 print(i) 7 #輸出: 8 #<re.Match object; span=(3, 9), match='100081'> 9 #<re.Match object; span=(13, 19), match='100084'> 10 #正確的輸出格式 11 for m in re.finditer(r'[1-9]\d{5}','BIT100081 TSU100084'): 12 if(m): 13 print(m.group(0)) 14 #100081 15 #100084
re.sub(pattern,repl,string,count=0,flags=0)
例:
# repl 替換匹配字串的字串 # count 匹配的最大替換次數 1 import re 2 print(re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 TSU100084')) 3 #BIT:zipcode TSU:zipcode 4 print(re.sub(r'[1-9]\d{5}',':zipcode','BIT100081 TSU100084',count=1)) 5 #BIT:zipcode TSU100084