#程式語言#
我是「學海無涯自學不惜!」,關注我,一同學習簡單易懂的Python編程。
第八十二節:匹配字符串
經過上一節比較枯燥的基礎內容,今天來看看如何利用正則表達式在Python中進行具體操作。
在Python中使用正則表達式,首先要導入一個re模塊。re就是Regular Expression(正則表達式)的縮寫,所以導入re模塊就是導入「正則表達式模塊」。
導入re模塊的代碼比較簡單,它是這樣的:
Import re
今天的學習內容就是使用正則表達式匹配字符串。
匹配字符串的實際意義就是查找、查詢字符串。在Python中,使用正則表達式匹配字符串,多數情況下,匹配成功後立即返回Match對象,不成功就返回None值。
None值就是假值,這個不用多述。
Match對象是什麼呢?就是用一對首位標籤「<>」,包含了一次匹配的結果,其中包含了很多的信息,包括有:待匹配的字符串文本、使用的正則表達式、搜索起始位置、搜索結束位置等等。
Match對象可以通過以下幾種方法來實現:
「.group()獲得匹配的字符串內容」
「.start()匹配字符串在原始字符串的開始位置」
「.end()匹配字符串在原始字符串的結束位置」
「.span()返回(.start(), .end())」
現在來正式介紹Python中使用正則表達式匹配字符串匹配字符串的具體操作方法:
1、match()方法
這個方法的用途是匹配字符串開頭的字符,它從字符串的起始處開始匹配,匹配成功後立即返回Match對象,不匹配則返回None值,它的語法格式如下:
re.match(pattern,string,[flags])
方法名關鍵字match前一定要加上re模塊名稱,並使用「.」連接;
小括號內有三個參數使用逗號「,」分隔;
第一個參數就是正則表達式pattern(模板),屬於必填參數;
第二個參數是要匹配的字符串string,也屬於必填參數;
第三個參數是標誌位,用來控制匹配的方式,屬於可選參數,並且Python中的常用標誌如下圖所示:
來看一個例子:匹配字符串是否已以「i_」開頭,詳見下圖:
可以看到,第一次匹配的時候沒有區分字母大小寫,匹配成功了返回為Match對象,並使用Match對象三種操作方法得到了起始位置、結束位置和匹配數據。
第二次匹配去掉了第三個可選的參數,結果返回了None值,後面對Match對象的操作方法就無效了,出現了異常。
2、search()方法
這個方法是在整個字符串中找到第一個匹配字符,匹配成功返回Match對象,不匹配則返回None值,它的語法格式如下:
re.search(pattern,string,[flags])
由於它的語法參數和match()方法是一樣的,所以就直接在上面的例子中的字符串中開頭加一點東西,再作為例子來實驗一下,詳見下圖:
可以看到,它的匹配字符雖然不在字符串的開頭,但是第一次匹配時也搜索出來了,第二次則是因為沒有設定不區分大小寫,所以沒有與大寫的字母匹配,返回了None值。
3、findall()方法
這種方法的功能就比前兩種要強大一些,它是匹配字符串中所有的合乎規則的字符,並將所有的匹配結果返回成為一個列表,匹配成功就返回一個有內容的列表,不成功則返回一個空列表。語法格式如下所示:
re.findall(pattern,string,[flags])
格式很雷同,參數用法也和前兩種方法一樣,直接上例子,詳見下圖:
可以看到,findall()方法的執行結果和前兩種方法是完全不同的。
接下來用兩個小場景模擬實例,來看看正則表達式匹配字符串在生活中可以有什麼應用。
第一個場景是模擬查詢手機號碼是否屬於中國電信,來看下圖代碼:
第二個場景是搜索輸入內容中有沒有自己感興趣的語句,最終我選擇了搜索關於「錢」的內容,請看下圖:
今天的內容就是這些了,感謝大家一直以來的支持,明天開始奉上的是「使用re模塊實現正則表達式的替換字符串操作」的內容,敬請拭目以待。
為自己加油,我是「學海無涯自學不惜!」