下面通過幾個案例來分析一下,
注意:本節的parsematch函數請參考《妙用re.sub分析正則表達式解析匹配過程》
案例一:
>>> re.findall(r".* .* (.*)",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
['斷魔歸本合元神']
>>> parsematch(r".* .* (.*)",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
第1次匹配,匹配情況:
匹配子串group(0): 第二回 悟徹菩提真妙理 斷魔歸本合元神,位置為:(0, 19)
匹配子串group(1): 斷魔歸本合元神,位置為:(12, 19)
>>> re.findall(r".* .* (.*)",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
['斷魔歸本合元神']
案例二:
>>> re.findall("(.)*",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
['神', '']
>>> parsematch("(.)*",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
第1次匹配,匹配情況:
匹配子串group(0): 第二回 悟徹菩提真妙理 斷魔歸本合元神,位置為:(0, 19)
匹配子串group(1): 神,位置為:(18, 19)
第2次匹配,匹配情況:
匹配子串group(0): ,位置為:(19, 19)
案例三:
>>> re.findall(".*",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
['第二回 悟徹菩提真妙理\u3000斷魔歸本合元神', '']
>>> parsematch(".*",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
第1次匹配,匹配情況:
匹配子串group(0): 第二回 悟徹菩提真妙理 斷魔歸本合元神,位置為:(0, 19)
第2次匹配,匹配情況:
匹配子串group(0): ,位置為:(19, 19)
>>>
案例四:
>>> re.findall(r"(.*) (.*) (.*)",'第二回 悟徹菩提真妙理 斷魔歸本合元神')
[('第二回', '悟徹菩提真妙理', '斷魔歸本合元神')]
>>>
上述4個案例的前2個案例,在第一次匹配存在group(1)的情況下,findall中返回的第一個元素為group(1)的匹配子串,而group(0)的數據沒有在findall中返回,而3個案例的第2次匹配以及第3個案例的第1次匹配都只有group(0),此時findall返回的就是group(0)的整體搜索串,第4個案例返回的是group(1,2,3)。
從這幾個案例的情況來看,findall在匹配后,如果匹配的子串只有一個組,則返回組0,否則返回組0后面的組,而組0不再返回。
老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython
請大家多多支持,點贊、評論和加關注!謝謝!
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
