re模塊、分組在re模塊的使用


一、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)

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM