Python 正規表示式

2021-09-29 15:26:35 字數 2298 閱讀 3397

正規表示式是用來簡潔表達一組字串的表示式,主要用在字串匹配中

正規表示式功能強大,可謂』一行勝千言』

.正規表示式使用前需要進行編譯,

就是將符合正規表示式語法的字串編譯成乙個特徵,用以檢測其他字串是否符合該特徵

.  	 	表示任何字元

字符集,對單個字元給出取值範圍[^

] 非字符集,對單個字元給出排除範圍 [

^abc]表示非a或b或c的單個字元

*  乙個字元0次或多次擴充套件

+ 乙個字元1次或多次擴充套件

? 前乙個字元0次或1次擴充套件 abc?表示ab,abc

| 左右表示式任意乙個 abc|def 表示abc,def

擴充套件前乙個字元n次 ab 表示abb

擴充套件前乙個字元m到n次 ab 表示ab,abb

^ 匹配字串開頭 ^abc表示abc且在乙個字串的開頭

$ 匹配字串結尾 abc$表示abc且在乙個字串的結尾

() 分組標記,內部只能用|操作符 (abc)表示abc,

(abc|def)表示abc,def

\d 數字,等價於[0-

9]\w 單詞字元,等價於[a-za-z0-

9_]

py[^th]

?on 'pyon'

'pyaon'

'pycon'..

. 即匹配py開頭on結尾中間沒有或有乙個字元但是不是t或h的字串

pyn 把大括號前的字元擴充套件0到3次 『pn』 『pyn』 『pyyyn』

^[a-za-z]

+$ 由26個字母組成的字串 其中^ $規定要匹配開頭和結尾^-

?\d+$ 整數形式的字串^[

0-9]

*[1-

9][0

-9]*$ 正整數形式的字串[1

-9]\d' re庫使用raw string型別表示正規表示式,表示為r'text'

'[1-9]\\d'
re模組中的常用函式

1 search():

字串查詢是否存在匹配的內容,返回第乙個匹配內容,沒找到返回none

2 match(

):從字串開始位置起開始匹配,如果找到返回match物件,沒找到返回none。如果存在但不是在起始位置也不算。

3 findall(

):以列表型別返回所有match物件,如果失敗返回none

4 finditer():

在字串中匹配,如果成功返回match可迭代物件,並可以通過迴圈方式對每乙個匹配物件進行相關操作,如果失敗返回none

for m in re.finditer(r'[1-9]\d'

,'bit100081 tsu100084'):

if m:

print

(m.group(0)

)100081

100084

5 split():

按照匹配的字串進行分割

可新增引數maxsplit=n 表示最大將字串分割成多少個,超過最大限制則一起輸出。

6 sub():

替換匹配的子字串,返回替換之後的字串,可新增引數限制最多替換多少個

m = re.sub(r'[1-9]\d'

,':zipcode'

,'bit100081 tsu100084'

)print

(m)bit:zipcode tsu:zipcode

rst = re.search(r'[1-9]\d'

,'bit100081 tsu100084'

)#一次性使用

pat = re.

compile

(r'[1-9]\d'

)rst = pat.search(

'bit100081 tsu100084'

)#物件導向,多次使用

當有多個子串符合匹配條件時預設輸出匹配最長的子串

當有操作符匹配不同長度子串時都可以加乙個問號表示最小匹配

rst = re.search(r'py.*n'

,'pyxn***n'

)print

(rst.group(0)

)rst = re.search(r'py.*?n'

,'py***n***n'

)print

(rst.group(0)

)pyxn***n

py***n

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模組的講解很簡單易懂,內容不多但起碼把人領進門了,...