問題:
m = re.findall('[0-9]*4[0-9]*', '[4]')
可以匹配到4.
m = re.findall('([0-9])*4([0-9])*', '[4]')
匹配不到4.
這是為什么呢?PS,這個是一個簡化的說明,我要用的正則比這個復雜,所以要用到(),表示一個序列的匹配。
補充一點,我放在notepad++中用的時候,兩種寫法都能匹配出來,不知道為什么python中就不行了。
答案:
python的正則中用()會進行匹配,所以返回結果是['',''],就是兩個()中的匹配。要想達到原來的匹配效果,就是把4匹配出來,有兩種解決方法:
1.最外層加個大括號,變成:m = re.findall('(([0-9])*4([0-9])*)', '[4]'),返回結果的第一個元素就是匹配結果了。
2.去除()的匹配結果返回,在括號前面加入?:,變成m = re.findall('(?:\d)*4(?:\d)*', '[4]'),返回結果就是要匹配的結果了。
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

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