python正則表達式中的括號匹配問題
問題:
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]'),返回結果就是要匹配的結果了。
相關文章
Pandas中map(),applymap(),apply()函數(shù)的使用方法
本文主要介紹了Pandas中map(),applymap(),apply()函數(shù)的使用方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2023-02-02Python 獲取圖片GPS等信息鎖定圖片拍攝地點、拍攝時間(實例代碼)
這篇文章主要介紹了Python 獲取圖片GPS等信息鎖定圖片拍攝地點、拍攝時間,先把圖片以二進制的格式讀取出來,然后通過 exifread 庫把里面的 GPS 信息提取出來,再以特定的格式打印出來,本文通過實例代碼給大家介紹的非常詳細,需要的朋友可以參考下2023-07-07Python動態(tài)配置管理Dynaconf的實現(xiàn)示例詳解
這篇文章主要為大家介紹了Python動態(tài)配置管理Dynaconf實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2022-07-07