Python函式篇(7) 正規表示式

2022-05-21 21:00:13 字數 2026 閱讀 6210

正規表示式為高階的文字模式匹配,抽取,與/或文字形式的搜尋和替換功能提供了基礎,簡單的來說,正規表示式是由一些字元和特殊符號組成的字串。python通過標準庫中的re模組來支援正規表示式。

首先介紹一下最常見的特殊符號和字元,即所謂的元字元。

表示法描述

正規表示式用法示例

literal

匹配文字字串的字面值literal

re.findall("chen","sadchen21")

.

匹配任意字元(除了\n之外)

re.findall("c..n","sadchen21")

^

從字串開始部分開始匹配

re.findall("^sad","sadchen21")

$匹配字串的終止部分

re.findall("21$","sadddchen21")

re.findall("i\\b","i am czp")   通過轉義符\來實現
re.findall("ka|b","sdkakb11")     匹配ka或b

re.findall("ka|b","sdka11")

re.findall("s..a","sdka11")  匹配在s和a之間任意的兩個字元

re.findall("..","sdka11") 匹配任意兩個字元

re.findall(".a","sdka112") 匹配a前的任意乙個字元

要顯式匹配乙個句點符號本身,必須使用反斜槓轉義句點符號的功能,例如「\.」

re.findall("^sa","sdka112")  匹配以s開頭的字元或字串

re.findall("12$","sdka112") 匹配以12結尾的字元或字串

匹配邊界字元「\b」

\b用於匹配乙個單詞的邊界,這意味著如果乙個模式必須位於單詞的起始部分,就不管該單詞前面(單詞位於字串中間)是否有任何字元(單詞位於首行),而\b將匹配出現在乙個單詞中間的模式,即不是單詞邊界

re.findall("er","never")        匹配任意包含the的字串

re.findall(r"er\b","never") 匹配任意以er為起始位置的字串

re.findall(r"er\b","evern") 匹配包含er但不以er為起始的字串

建立字符集「」

「.」可以用於匹配任意符號,但某些時候需要匹配某些特定字元,這就需要,用來匹配一對方括號中包含的任何字元。如b[ner]t匹配的字串就是bnt,bet,brt,方括號表示邏輯或的功能,對於單個字元,如果想要:要麼匹配a,要麼匹配b,就可以用[ab]表示,字符集只適用於單字元的情況,如果要匹配多個字元,就需要使用擇一方法「|」

最常用的特殊符號「」「+」「?」

""、"?"、"+"都可以用來匹配乙個、多個或者沒有出現的字串模式,"*」用來匹配其左邊的正規表示式出現零次或多次,「+」號將匹配一次或多次出現的情況,「?」將匹配零次或一次出現的正規表示式,而或這將最終精確的匹配前面的正規表示式n次或一定範圍的次數。

當模式匹配使用分組操作符的時候,正規表示式的引擎將試圖匹配出盡可能多的字元,這叫做貪婪匹配

re.findall("sad*","saddddsds")  匹配d,d可以出現0次,或多次

re.findall("sad+","saddddsds") 匹配d,d不可以出現0次,匹配1次或多次

re.findall("sad?","saddddsds") 匹配d,d可以出現0次,匹配0次或1次

re.findall("\d","sad123dsds") 匹配兩個連續的數字字元

如果想要提取任意已經成功匹配的特定字串或子字串,就需要用「()」來包裹正規表示式

當使用正規表示式的時候,一對圓括號可以實現以下任意乙個功能

常見的正規表示式屬性

Python 正規表示式 7

常見問題 1 使用正規表示式雖說通吃,但有的時候直接使用字串的方法也是個不錯的選擇。2 match 只會報告一次成功的匹配,並且匹配的位置必須是從字串的第乙個字元開始 search 函式遍歷整個字串,並報告它找到的第乙個匹配 3 貪婪vs非貪婪 當重複乙個正規表示式時,如果使用a 那麼結果是盡可能多...

正規表示式篇

利用正規表示式來判斷輸入的字串格式是否正確 string regex 1 d 2 0 4 d 25 0 5 1 9 d 1 9 1 d 2 0 4 d 25 0 5 1 9 d d 1 d 2 0 4 d 25 0 5 1 9 d d 1 d 2 0 4 d 25 0 5 1 9 d d 判斷ip ...

Python 正規表示式(爬蟲篇)

實際上爬蟲有四個主要步驟 取 去掉對我們沒用處的資料 處理資料 按照我們想要的方式儲存和使用 我們爬下來的資料大部分都是全部的網頁,這些資料有時候是很龐大並且混亂的,大部分的董事是我們不關心的,所以我們需要將之按我們的需要過濾和匹配出來。那麼對於文字的過濾或者規則的匹配,最強大的就是正規表示式,是 ...