正規表示式符號

2022-08-16 08:27:14 字數 2103 閱讀 1535

1'.

'預設匹配除\n之外的任意乙個字元,若指定flag dotall,則匹配任意字元,包括換行2'

^' 匹配字元開頭,若指定flags multiline,這種也可以匹配上(r"

^a","

\nabc\neee

",flags=re.multiline)3'

$' 匹配字元結尾,或e.search("

foo$

","bfoo\nsdfsf

",flags=re.multiline).group()也可以4'

*' 匹配*號前的字元0次或多次,re.findall("

ab*","

cabb3abcbbac

") 結果為['

abb', '

ab', 'a'

]5'+

' 匹配前乙個字元1次或多次,re.findall("

ab+","

ab+cd+abb+bba

") 結果['

ab', '

abb']6

'?'匹配前乙個字元1次或0次7'

'匹配前乙個字元m次8'

' 匹配前乙個字元n到m次,re.findall("

ab","

abb abc abbcbbb

") 結果'

abb', '

ab', '

abb']9

'|' 匹配|左或|右的字元,re.search("

abc|abc

","abcbabccd

").group() 結果'

abc'10'

(...)

' 分組匹配,re.search("

(abc)a(123|456)c

", "

abcabca456c

").group() 結果 abcabca456c

111213'

\a' 只從字元開頭匹配,re.search("

\aabc

","alexabc

") 是匹配不到的14'

\z'匹配字元結尾,同$15'

\d' 匹配數字0-916'

\d'匹配非數字17'

\w' 匹配[a-za-z0-9]18'

\w' 匹配非[a-za-z0-9]19'

s' 匹配空白字元、\t、\n、\r , re.search("

\s+","

ab\tc1\n3

").group() 結果 '\t'

2021

'(?p...)

' 分組匹配 re.search("

(?p[0-9])(?p[0-9])(?p[0-9])

","371481199306143242

").groupdict("

city

") 結果

最常用的匹配語法

1

re.match 從頭開始匹配

2re.search 匹配包含

3re.findall 把所有匹配到的字元放到以列表中的元素返回

4re.splitall 以匹配到的字元當做列表分隔符

5 re.sub 匹配字元並替換

反斜槓的困擾

與大多數程式語言相同,正規表示式裡使用"\"作為轉義字元,這就可能造成反斜槓困擾。假如你需要匹配文字中的字元"\",那麼使用程式語言表示的正規表示式裡將需要4個反斜槓"\\\\":前兩個和後兩個分別用於在程式語言裡轉義成反斜槓,轉換成兩個反斜槓後再在正規表示式裡轉義成乙個反斜槓。python裡的原生字串很好地解決了這個問題,這個例子中的正規表示式可以使用r"\\"表示。同樣,匹配乙個數字的"\\d"可以寫成r"\d"。有了原生字串,你再也不用擔心是不是漏寫了反斜槓,寫出來的表示式也更直觀。

幾個匹配模式

1

re.i(re.ignorecase): 忽略大小寫(括號內是完整寫法,下同)

2 m(multiline): 多行模式,改變'

^'和'$'

的行為(參見上圖)

3 s(dotall): 點任意匹配模式,改變'

.'的行為

正規表示式符號

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

正規表示式符號

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

正規表示式符號

字元 描述 標記下乙個字元是特殊字元或文字。例如,n 和字元 n 匹配。n 則和換行字元匹配。序列 和 匹配,而 則和 匹配。匹配輸入的開頭。匹配輸入的末尾。匹配前乙個字元零或多次。例如,zo 與 z 或 zoo 匹配。匹配前乙個字元一次或多次。例如,zo 與 zoo 匹配,但和 z 不匹配。匹配前...