1. 程式人生 > >Python基礎--正則表示式

Python基礎--正則表示式

正則表示式是處理字串非常有用的工具,學習起來也足夠的蛋疼,為此總結一下正則表示式。Python中提供了re模組對正則表示式操作的功能。下面就瞭解正則表示式的元字元。

一.元字元

1."."

匹配換行符以外的任意單個字元

2."*"

匹配位於*之前的字元0或者多次

3."+"

匹配位於+之前的字元1一次或者多次,也就是貪婪模式

4."-"

在[]中表示範圍

5."|"

匹配位於"|"之前或者之後的字元

6."^"

匹配行首,匹配以"^"後面的字元開頭的字串

7."$"

匹配行尾,匹配以$之前字元結束的字串

8."?"

匹配位於"?"之前的0個或者1個字元,是非貪婪模式

9."\"

轉義字元

10."\f"

匹配換頁符

11."\n"

匹配換行符

12."\r"

匹配回車符

13."\b"

匹配字串頭或者尾

14."\d"

匹配任意數字

15."\D"

匹配非數字

16."\s"

匹配任意空白字元,空格、換行符等

17."\S"

與"\s"相反

18."\w"

匹配任意字母、數字和下劃線

19."\W"

與"\w"相反

20."()"

代表()內是一個整體

21."{}"

按照"{}"內的次數進行匹配,例如:a{1,},匹配1個到多個字元a

22."[]"

匹配在"[]"內的字元

23.[^]

在"[]"內,^代表取反

二、re模組的主要方法

1.compile

建立模式物件,把正則表示式編譯成Pattern例項,並用這個例項處理字串獲得匹配結果,結合下面幾種查詢方法使用。

import re#匯入re模組
str1="acsdvfdbfdbdrsdfdsfvf"
pattern=re.compile(r'\w+d\w+')
print(pattern)
print(type(pattern))

列印的結果

2.search

在整個字串進行查詢,返回一個match物件

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#編譯正則表示式,匹配B開頭的單詞
res=pattern.search(example)#Pattern的查詢方法
print(res)

返回匹配到的字串索引,一個match物件

3.match

在字串開始處進行匹配,返回一個match物件

把search方法換成match方法

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bB\w+\b')#編譯正則表示式,匹配B開頭的單詞
res=pattern.match(example)#Pattern的查詢方法
print(res)

返回的是none,因為match是從字串頭開始匹配

pattern=re.compile(r'\bs\w+\b')#匹配s開頭的單詞

結果為:<_sre.SRE_Match object; span=(0, 8), match='shascddo'>

4.findall

找到匹配模式中的所有項

import re
example="shascddo BBnddd dsDsvBbfvb"
pattern=re.compile(r'\bs\w+\b')
res=pattern.findall(example)#換成findall方法
print(res)

匹配結果:['shascddo'],和match方法不同,返回找到的列表,並且是在整個字串中查詢

5.split

根據表示式進行分割

import re
str1="asdcsd.sdvds...sdvs"
pat=re.compile(r'[\.]')#\在這裡是轉義字元,匹配.
pat=pat.split(str1,maxsplit=2)#maxsplit是最多切割次數
print(pat)

maxsplit是可選引數,不填會預設匹配所有的"."進行分割

列印結果:['asdcsd', 'sdvds', '..sdvs']

6.sub

替換字串

import re
str1="sdvdIgdgbs"
pat=re.compile(r'[I]')#找到字元I
str1=pat.sub('i',str1)#替換
print(str1)

列印結果為:sdvdigdgbs

鑑於在學習正則的煩惱,總結一些常用的正則表示式和re的一些方法。參考:《python程式設計》。