天天看點

python--正則match_compile_search_findall用法

正規表達式功能很強大,但學精通還是要自己花點時間的。

下面講解下match、compile、search、findall常用的方法

Match

從字元串的第一個字元開始比對,如果未比對到傳回None,比對到則傳回一個對象

<a href="https://s5.51cto.com/wyfs02/M01/9B/CD/wKiom1lnNMOR_QfTAAARIhJPi0A364.png-wh_500x0-wm_3-wmp_4-s_4217727800.png" target="_blank"></a>

未比對到傳回None

<a href="https://s5.51cto.com/wyfs02/M00/9B/CC/wKioL1lnNM2DABSvAAAQmmjmux4207.png-wh_500x0-wm_3-wmp_4-s_397505854.png" target="_blank"></a>

開始字元比對到了h,在傳回一個對象,并且需要通過group來擷取這個h值。

Search

Search與match有些類似,隻是搜尋整個字元串然後第一個比對到指定的字元則傳回值,未比對到則傳回None。擷取值得方法也需要通過group()

<a href="https://s1.51cto.com/wyfs02/M00/9B/CD/wKiom1lnNNjir83pAAANKxpCEag476.png-wh_500x0-wm_3-wmp_4-s_1787002632.png" target="_blank"></a>

未比對到字元則傳回None

<a href="https://s3.51cto.com/wyfs02/M00/9B/CD/wKiom1lnNOSSHlDJAAAQ7A9SHZg008.png-wh_500x0-wm_3-wmp_4-s_867038957.png" target="_blank"></a>

從字元串開始往後比對,一比對到則傳回一個對象。需要通過group來擷取比對到的值。

Findall

Findall是比對出字元串中所有跟指定值有關的值,并且以清單的形式傳回。未比對到則傳回一個空的清單。

<a href="https://s4.51cto.com/wyfs02/M00/9B/CD/wKiom1lnNO_jsXynAAAK4RQgyw0439.png-wh_500x0-wm_3-wmp_4-s_781194583.png" target="_blank"></a>

未比對到傳回一個空清單。

<a href="https://s4.51cto.com/wyfs02/M01/9B/CD/wKiom1lnNPmQvO12AAALDTiG3KE923.png-wh_500x0-wm_3-wmp_4-s_1557466438.png" target="_blank"></a>

比對出指定字元的所有值,并以清單傳回值。

Compile

re.compile是将正規表達式轉換為模式對象,這樣可以更有效率比對。使用compile轉換一次之後,以後每次使用模式時就不用進行轉換

<a href="https://s1.51cto.com/wyfs02/M01/9B/CD/wKioL1lnNQbSp5moAAARzTNHo3I065.png-wh_500x0-wm_3-wmp_4-s_3098510934.png" target="_blank"></a>

其實這跟執行re.findall(‘img’,a)得到的結果是一樣的,隻是使用了compile後,下面執行findall方法時就不需要再轉換一次模式對象了。

本文轉自niedongri 51CTO部落格,原文連結:http://blog.51cto.com/laomomo/1947243,如需轉載請自行聯系原作者