正規表達式功能很強大,但學精通還是要自己花點時間的。
下面講解下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,如需轉載請自行聯系原作者