一、re模塊
1、findall(" 正則表達式","str" )
1 import re 2 s="sdsa1212dasda212sa2d" 3 ret=re.findall("\d+",s) 4 print(ret)
結果返回一個列表
2、search(" 正則表達式","str" )
1 ret=re.search("\d+",s) #匹配字符串中第一個出現的符合表達式的結果(不一定在開頭) 2 print(ret.group())
返回結果用.group查看
3、match("正則表達式","str")
1 ret=re.match("\d+",s) #字符串的開頭必須是符合正則表達式的 否則返回None 2 print(ret)
4、split 切割
1 ret=re.split("\d+",s) #從符合表達式的位置切,返回的是列表 2 print(ret)
5、compile("正則表達式"),將正則表達式進行一次編譯,可以多次使用編譯結果
1 ret=re.compile("\d+") ret作為編譯結果直接使用 2 res=ret.findall(s) #直接使用正則表達式的編譯結果 3 print(res)
6、finditer("\d+",str) 返回一個迭代器,節省內存
1 ret=re.compile("\d+") 2 res=ret.finditer(s) 3 for i in res: 4 print(i.group())
二、分組在模塊中的使用
1、findall( ) :優先返回在( )里的內容,如果都加括號,則返回一個裝在列表里的元組,否則把優先的匹配結果放在元組里返回一個列表
1 s = '<a>wahaha</s>' 2 ret = re.findall('<(\w+)>(\w+)</\w+>',s)
2、search():單個優先沒有作用,全部的正則表達式加( )后根據 .group(1,2,3)選擇的返回哪一組優先
s = '<a>wahaha</s>' ret = re.search('<(\w+)>(\w+)</(\w+)>', s) print(ret.group()) print(ret.group(1)) print(ret.group(2)) print(ret.group(3))
3、split():當正則表達式加上() 后會把切割的字符也一起返回一個列表里
1 s = '<a>wahaha</s>' 2 ret = re.split('(\d+)','alex83taibai40egon25') 3 print(ret)
4、分組命名:(?P<這個組的名字>正則表達式) print(ret.group('con'))
1 s = '<a>wahaha</a>' 2 ret = re.search('>(?P<con>\w+)<',s) 3 print(ret.group(1)) 4 print(ret.group('con'))
1 s = '<a>wahaha</a>' 2 pattern = '<(\w+)>(\w+)</(\w+)>' 3 ret = re.search(pattern,s) 4 print(ret.group(1) == ret.group(3))
5、使用前面的分組 要求使用這個名字的分組和前面同名分組中的內容匹配的必須一致
1 pattern = '<(?P<tab>\w+)>(\w+)</(?P=tab)>' 2 ret = re.search(pattern,s) 3 print(ret)