正則 re模組
阿新 • • 發佈:2018-11-12
re.match 匹配字串的開始,如果不符合則返回None
re.match(pattern, string, flags=0)
>>> re.match('[a-z]','1aaa') # 沒匹配到返回None >>> re.match('[a-z]','a1aaa') <_sre.SRE_Match object; span=(0, 1), match='a'> >>> re.match('[a-z]','a1aaa').group() #group()匹配到的字串 'a' >>> re.match('[a-z]','a1aaa').span() (0, 1)
re.search 匹配整個字串,直到找到一個匹配
>>> re.search('[a-z]','1aaa') <_sre.SRE_Match object; span=(1, 2), match='a'>
re.sub 查詢替換
re.sub(pattern, repl, string, count=0)
>>> re.sub(r'[^a-z]','*','ab11cd22ef33') 'ab**cd**ef**' >>> re.sub('\D','*','ab11cd22ef33') '**11**22**33'
compile 函式 編譯正則表示式。
re.compile(pattern[, flags])
flags:匹配模式 re.I 忽略大小寫 re.M 多行模式等
>>> pattern = re.compile(r'\D+') >>> pattern.search('ab-11cd22ef33').group() 'ab-' >>> pattern.search('ab-11cd22ef33',0,2).group() 'ab' >>> >>> pattern.search('ab-11cd22ef33').start() 0 >>> pattern.search('ab-11cd22ef33').end() 3 >>> pattern.search('ab-11cd22ef33').span() (0, 3)
findall 匹配所有符合正則的字串,以列表形式返回
>>> re.findall('[a-z]','ab11cd22ef33') #匹配所有符合正則的字串,並返回列表 ['a', 'b', 'c', 'd', 'e', 'f'] >>> re.findall('[a-z]','123456') #沒有匹配到則返回空列表 [] >>> pat = re.compile(r'\d+') >>> pat.findall('aa 12 bb34 de') ['12', '34'] >>> pat.findall('aa 12 bb34 de56') ['12', '34', '56'] >>> >>> pat.findall('aa 12 bb34 de56',0,5) ['12']
finditer 類似findall 將結果作為一個迭代器返回
>>> pattern = re.compile(r'\D+') >>> i = pattern.finditer('ab-11cd22ef33') >>> i <callable_iterator object at 0x7f8fc4d38908> >>> for x in i: ... print(x) ... <_sre.SRE_Match object; span=(0, 3), match='ab-'> <_sre.SRE_Match object; span=(5, 7), match='cd'> <_sre.SRE_Match object; span=(9, 11), match='ef'>
split 按照正則匹配的子串將字串分割並返回列表
>>> re.split(r'\*','a*b*c') ['a', 'b', 'c']