Python re 正則模組

2021-07-04 04:49:07 字數 1429 閱讀 6423

有些字元比較特殊,它們和自身並不匹配,而是會表明應和一些特殊的東西匹配,或者它們會影響到 re 其它部分的重複次數,它們叫元字元。

. ^ $ * + ? ,其中 m 和 n 是十進位制整數。該限定符的意思是至少有 m 個重複,至多到 n 個重複。舉個例子,a/b 將匹配 「a/b」,」a//b」 和 「a///b」。它不能匹配 「ab」 因為沒有斜槓,也不能匹配 「ab」 ,因為有四個。

你可以忽略 m 或 n;因為會為缺失的值假設乙個合理的值。忽略 m 會認為下邊界是 0,而忽略 n 的結果將是上邊界為無窮大 – 實際上是先前我們提到的 2 兆,但這也許同無窮大一樣。

反斜槓的麻煩

在早期規定中,正規表示式用反斜槓字元 (「」「) 來表示特殊格式或允許使用特殊字元而不呼叫它的特殊用法。這就與 python 在字串中的那些起相同作用的相同字元產生了衝突。

讓我們舉例說明,你想寫乙個 re 以匹配字串 「」section」,可能是在乙個 latex 檔案查詢。為了要在程式**中判斷,首先要寫出想要匹配的字串。接下來你需要在所有反斜槓和元字元前加反斜槓來取消其特殊意義。

字元 階段

\section 要匹配的字串

\section 為 re.compile 取消反斜槓的特殊意義

「\\section」 為字串取消反斜槓

簡單地說,為了匹配乙個反斜槓,不得不在 re 字串中寫 『\』,因為正規表示式中必須是 「\」,而每個反斜槓按 python 字串字母表示的常規必須表示成 「\」。在 res 中反斜槓的這個重複特性會導致大量重複的反斜槓,而且所生成的字串也很難懂。

解決的辦法就是為正規表示式使用 python 的 raw 字串表示;在字串前加個 「r」 反斜槓就不會被任何特殊方式處理,所以 r」\n」 就是包含」\」 和 「n」 的兩個字元,而 「\n」 則是乙個字元,表示乙個換行。正規表示式通常在 python **中都是用這種 raw 字串表示。

常規字串

raw 字串

「ab*」

r」ab*」

「\\section」

r」\section」

「\w+\s+\1」

r」\w+\s+\1」

方法/屬性

作用match()

決定 re 是否在字串剛開始的位置匹配

search()

掃瞄字串,找到這個 re 匹配的位置

findall()

找到 re 匹配的所有子串,並把它們作為乙個列表返回

finditer()

找到 re 匹配的所有子串,並把它們作為乙個迭代器返回

如果沒有匹配到的話,match() 和 search() 將返回 none。如果成功的話,就會返回乙個matchobject例項,其中有這次匹配的資訊:它是從**開始和結束,它所匹配的子串等等。

比較詳細python正規表示式操作指南(re使用)

Python re正則模組

對於比較複雜的字串處理任務,需要依靠正規表示式。首先需要匯入 re 模組 import re常用的元字元 符號含義 匹配除 n 和 r 之外的任何單個字元。匹配字串開始位置 匹配字串結束位置 前面的元素重複0次,1次或多次 前面的元素重複0次或1次 前面的元素重複1次或多次 前面的元素出現了n次 前...

python re正則模組詳解

正規表示式 regular expression 描述了一種字串匹配的模式 pattern 可以用來檢查乙個串是否含有某種子串 將匹配的子串替換或者從某個串中取出符合某個條件的子串等。構造正規表示式的方法和建立數學表示式的方法一樣。也就是用多種元字元與運算子可以將小的表示式結合在一起來建立更大的表示...

python re模組與正則

正規表示式中的轉義符在python的字串中也剛好有轉移的作用,但是正規表示式中的轉義符和字串中的轉義符並沒關係,且還容易有衝突。為了避免這種衝突,我們所有的正則都以在工具中的測試結果為結果,然後只需要在正則和待匹配的字串外面都加r即可 print n n print n n print r n n ...