re模塊及其用法


一、re模塊下的常用方法

  首先在使用re模塊之前,需要引入re模塊

  import re

  1.與查找相關的:

    1.findall  返回列表,找到所有的匹配項

ret = re.findall("\d+","asda132eqwe啊阿達456")
print(ret)
# ['132', '456']

    2.search 匹配從左到右第一個符合,返回一個變量,通過group方法取到值,沒有匹配到就會返回None,使用group會報錯。

ret = re.search("\d+","asda132eqwe啊阿達456")
print(ret.group())
#132
ret = re.search("\d+","asdaeqwe啊阿達")
print(ret.group())
#AttributeError: 'NoneType' object has no attribute 'group'

    3.match 相當於在search的正則表達式中加了一個“^”

  2.與字符串處理相關的;

    1.spilt  返回列表,按照正則規則切割,默認匹配到的內容會被切割掉。

ret = re.split("\d+","asd23sadasd90dasdasd809asd89")  #(\d+)可以把切割掉的保留下來
print(ret)
# ['asd', 'sadasd', 'dasdasd', 'asd', '']

    2.sub、subn  替換,按照正則規則去尋找要被替換的內容,subn返回元組,第二個值是替換的次數。

ret = re.sub("\d+","H","asd23asd34455asd55")
print(ret)
# asdHasdHasdH
ret = re.subn("\d+","H","asd23asd34455asd55")
print(ret)
# ('asdHasdHasdH', 3)

  3.re模塊的進階:時間\空間

    1.compile  編譯一個正則表達式,用這個結果去search match findall finditer 能節省時間,不用每次使用的時候再去編譯了。

ret = re.compile("\d+")
res = ret.findall("asd23asd34455asd55")
print(res)
res = ret.search("asd23asd34455asd55")
print(res.group())

    2.finditer 返回一個迭代器,所有的結果都在這個迭代器中,需要通過循環+group的形式取值 能夠節省內存。

res = re.finditer("\d+","asd23asd34455asd55")
print(res)
for i in res:
    print(i.group())

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

s = '<a>wahaha</a>'
ret = re.search("(>)(\w+)(<)",s)
print(ret.group())    #不加參數,默認是匹配所有結果
print(ret.group(1))    #數字參數表示的是取對應分組中的內容
print(ret.group(2))
print(ret.group(3))
ret = re.findall(">(\w+)<",s)
print(ret)
#['wahaha']
#為了findall也可以順利取到分組中的內容,有一個特殊的語法,就是優先顯示分組中的內容
ret = re.findall('\d+(?:\.\d+)?','1.234*4')
print(ret)
#['1.234', '4']
#如果按照優先顯示,那么結果就不是想要的。所以在括號中加入"?:"就可以取消分組優先,還不會破壞原本的正則表達式。
ret = re.split('(\d+)','alex83taibai40egon25aa')
print(ret)
#['alex', '83', 'taibai', '40', 'egon', '25', 'aa']
#用split切割后消失的部分,可以用()將正則規則括起來,這樣就能得到切割掉的部分
s = '<a>wahaha</a>'
ret = re.search(">(?P<com>\w+)<",s)
print(ret.group(1))
print(ret.group("com"))
#wahaha
#wahaha
#可以通過在分組中加入"?P<name>",來對這個分組命名,在group給參數時可以給這個組的名字。
#使用前面的分組,要求使用這個名字的分組和前面同名分組中的內容匹配必須一致
s = '<a>wahaha</a>'
ret = re.search("<(?P<tag>\w+)>(\w+)</(?P=tag)>",s)
print(ret.group())
#<a>wahaha</a>

 


免責聲明!

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



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