Python正規表示式

2021-08-10 01:38:21 字數 3837 閱讀 5989

主要內容:

1.正規表示式基本概念

2.python正規表示式re模組

3.正規表示式語法

4.re模組相關方法使用

1.使用單個字串來描述匹配一系列符合某個句法規則的字串

2.是對字串操作的一種邏輯公式

3.處理文字和資料

4.正規表示式過程:依次拿出表示式和文字中的字元比較,如果每乙個字元都能匹配,則匹配成功;否則匹配失敗。

1.import re:正規表示式模組

2.第乙個正規表示式:

r『imooc』→pattern→match→result

import re #匯入re模組

生成pattern物件:pa = re.compile(r'imooc') #匹配的字元

生成match物件:ma = pa.match('imooc.com') #被匹配的字元

ma.group() ==>imooc #返回匹配的字元

ma.span() ==>(0,5) #被匹配字串所在索引位置

ma.string() ==>'imooc.com'

#返回被匹配字串

ma.re ==>re.compile(r'imooc') #返回例項

正常匹配需要使用compile、match方法,先生成乙個pattern物件,再生成乙個match物件。pattern物件相當於將匹配字串進行了包裝,便於之後的match(匹配)。生成的的match物件是將原字串與匹配字串進行比較,將匹配成功的結果存入match物件中。使用group()方法可以將匹配成功的結果列印出來。

.→ 匹配所有字元(除了換行符\n)

[…]→ 匹配字符集[a-za-z0-9]

\d/\d→ 匹配數字/匹配非數字

\s/\s →匹配空白字元/匹配非空白字元

\w/\w →匹配單詞字元[a-za-z0-9](,.等都不能匹配)/匹配非單詞字元(,.等都能匹配)

* →匹配前乙個字元0次或者無限次

+ →匹配前乙個字元1次或者無限次

? →匹配前乙個字元0次或者1次

/ →匹配前乙個字元m次或者m-n次

*?/+?/?? →匹配模式變為非貪婪(盡可能少匹配字元)

^→ 匹配字串的開頭

$ →匹配字串的結尾

| →匹配左右任意乙個表示式,或

\a/ \z→指定的字串必須出現在開頭/結尾

(ab)→ 括號中表示式作為乙個分組

\→ 引用編號為number的分組匹配到的字串

(?p) →分組起別名

(?p=name) →引用別名為name的分組匹配字串

re=re.match(r'[_a-za-z]+[_\w]*','_htll')

ma.group #返回_htll,有效

re=re.match(r'[_a-za-z]+[_\w]*','[htll')

ma.group #無效

ma=re.match(r'[1-9]?[0-9]','99')

ma.group #有效

ma=re.match(r'[1-9]?[0-9]','9')

ma.group #有效

ma=re.match(r'[1-9]?[0-9]','09')

ma.group #只匹配了0

ma=re.match(r'[a-za-z0-9]','abc123')

ma.group #有效

ma=re.match(r'[a-za-z0-9]','abc1234')

ma.group #只匹配到abc123

ma=re.match(r'[a-za-z0-9]','abc12_')

ma.group #無效

ma=re.match(r'[a-za-z0-9]@163.com','[email protected]')

ma.group #有效

ma=re.match(r'[a-za-z0-9]@163.com','[email protected]')

ma.group #無效,長度超出

ma=re.match(r'[0-9][a-z]*','1bc')

ma.group #貪婪模式,匹配到1bc

ma=re.match(r'[0-9][a-z]*?','1bc')

ma.group #非貪婪模式,盡可能少匹配,匹配到1。

ma=re.match(r'[\w]@163.com','[email protected]')

ma.group #匹配到[email protected]

ma=re.match(r'[a-za-z0-9]@163.com$','[email protected]')

ma.group #無效,必須以@163.com結尾

ma=re.match(r'<[\w]+>','')

ma.group #有效

ma=re.match(r'<([\w]+>)','')

ma.group #有效

ma=re.match(r'<([\w]+>)\1','book>')

ma.group #有效

() 是為了提取匹配的字串。表示式中有幾個()就有幾個相應的匹配字串。

(\s*)表示連續空格的字串。

是定義匹配的字元範圍。比如[a-za-z0-9] 表示相應位置的字元要匹配英文本元和數字。

[\s*]表示空格或者*號。

{}一般用來表示匹配的長度,比如 \s表示匹配三個空格,\s[1,3]表示匹配一到三個空格。 (0-9) 匹配 『0-9′ 本身。 [0-9]* 匹配數字(注意後面有*,可以為空)[0-9]+ 匹配數字(注意後面有 +,不可以為空) 寫法錯誤。 [0-9] 表示長度為 0 到 9 的數字字串。

search(pattern, string, flags=0) #在乙個字串中查詢匹配

findall(pattern, string, flags=0) #返回所有匹配的列表集合

sub(pattern, repl, string, count=0, flags=0) #匹配部分替換為其他值

split(pattern, string, maxsplit=0, flags=0) #根據匹配分割字串,返回分割字串組成的列表

python正規表示式元字元 正規表示式

字元 描述將下乙個字元標記為乙個特殊字元 或乙個原義字元 或乙個 向後引用 或乙個八進位制轉義符。例如,n 匹配字元 n n 匹配乙個換行符。序列 匹配 而 則匹配 匹配輸入字串的開始位置。如果設定了 regexp 物件的 multiline 屬性,也匹配 n 或 r 之後的位置。匹配輸入字串的結束...

Python 正規表示式

1.在python中,所有和正規表示式相關的功能都包含在re模組中。2.字元 表示 字串的末尾 如 road 則表示 只有當 road 出現在乙個字串的尾部時才會匹配。3.字元 表示 字元中的開始 如 road 則表示 只有當 road 出現在乙個字串的頭部時才會匹配。4.利用re.sub函式對字串...

Python正規表示式

學習python自然而然就不得不面對正規表示式這個難題。當初在沒有學習python之前,自己也曾經嘗試著學習過正規表示式,但是那時候感覺很麻煩,很難懂,結果就是不了了之。但是現在學習python我用的書是 python基礎教程 第二版 這本書中對re模組的講解很簡單易懂,內容不多但起碼把人領進門了,...