函式會在字串內查詢模式匹配,直到找到第乙個匹配然後返回乙個物件
通過呼叫group()方法得到匹配的字串
例:
# search
print(re.search("(?p[a-z]+)","alex36wusir34sdfahk33"))
print(re.search("(?p[a-z]+)","alex36wusir34sdfahk33").group())
print(re.search("(?p[a-z]+)\d+","alex36wusir34sdfahk33"))
print((re.search("(?p[a-z]+)(?p\d+)","alex36wusir34sdfahk33")).group("name"))
print((re.search("(?p[a-z]+)(?p\d+)","alex36wusir34sdfahk33")).group("age"))
結果:
<_sre.sre_match object; span=(0, 4), match='alex'>
alex
<_sre.sre_match object; span=(0, 6), match='alex36'>
alex
36
和search差不多,不過只在字串開始處進行匹配
分割例:
#split
print(re.split(" ","hello abc def"))
print(re.split("[ |]","hello abc|def"))
print(re.split("[ab]","asdabcd"))#是按裡面的a或b,所以分的時候按a分,再把剩下的按b分一次
print(re.split("[ab]","abc"))#注意按a分時,第乙個為a它左邊為空右邊為bc,再按b分bc作為空右為c
結果:
['hello', 'abc', 'def']
['hello', 'abc', 'def']
['', 'sd', '', 'cd']
['', '', 'c']
# sub 首先得有個字串,想把字串中的數字替換成別的 所以得先在字串中找到數字,然後用什麼替換
print(re.sub("\d","a","jaskdfas21443dfjk325"))
print(re.sub("\d","a","jaskdfas21443dfjk325",4))
print(re.subn("\d","a","jaskdfas21443dfjk325"))
結果:
jaskdfasaaaaadfjkaaa
jaskdfasaaaa3dfjk325
('jaskdfasaaaaadfjkaaa', 8)
#compile 如果只是一次,那麼和re.findall()是一樣的。但是多次的話,效率上就可以看出不同了
#後者需要對規則編譯好多次,而compile只需對規則編譯一次
com = re.compile("\d+")
print(com.findall("afsd1323asd23767"))
結果:
['1323', '23767']
是把能匹配到的所有封裝到乙個迭代器裡面(當處理的比較多的時候,它把東西放到迭代器中,用一條處理一條)
#finditer
ret = re.finditer("\d","dsafg31j123")
print(ret)
print(next(ret).group())
print(next(ret).group())
結果:
3
1
補充:
#這是因為findall會優先把匹配結果組裡內容返回,如果想要匹配結果,取消許可權即可
print(ret1)
結果:
python模組 re模組
匹配任意字元 匹配指定字元類別 字元開頭 字元結尾 取非字元 重複多次字元 0次或多次 重複多次字元 1次或多次 重複單次字元 左右表示式任意匹配 重複m到n次字元 重複m次字元 d 匹配任何十進位制數,相當於 0 9 d 匹配任何非數字字元,相當於 0 9 s 匹配任何空白字元,相當於 fdss ...
subprocess模組 re模組
import subprocess 匯入subprocess模組,該模組的作用為可以通過python 向終端 cmd 傳送命令 while true 進行迴圈,可以讓使用者重複的進行輸入 cmd str input 請輸入終端命令 strip 定義變數cmd str obj subprocess.p...
常用模組 re模組
由堆具有特殊意義的字元組成的式子。用於匹配查詢字串內容。主要學習重點,就是學習這些字元的含義。abc 表示式不包含任何特殊字元,就是精準匹配,說白了判斷是否相同 print re.findall abc abcbbb abc n t f 符號含義 a從字元的開始處開始匹配 z從字元的結尾處匹配 從字...