python正規表示式

2021-09-02 12:44:27 字數 2229 閱讀 2306

1. 什麼是正規表示式?

正規表示式本身是一種小型的、高度專業化的程式語言,而在python中,通過內嵌整合re模組,可以直接呼叫來實現正則匹配。正規表示式模式被編譯成一系列的位元組碼,然後由用c編寫的匹配引擎執行。

2. 正規表示式

2.1 正規表示式普通字元和11個元字元

字元型別

匹配字元

表示式

匹配物件

普通字元

匹配自身

abcabc

匹配任意除換行符"\n"外的字元(在dotall模式中也能匹配換行符

a.cabc

轉義字元,使後乙個字元改變原來的意思

a\.c;a\\c

a.c;a\c

匹配前乙個字元0或多次

abc*

ab;abccc

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

abc+

abc;abccc

匹配乙個字元0次或1次

abc?

ab;abc

匹配字串開頭。在多行模式中匹配每一行的開頭

^abc

abc匹配字串末尾,在多行模式中匹配每一行的末尾

abc$

abc|

或。匹配|左右表示式任意乙個,從左到右匹配,如果|沒有包括在()中,則它的範圍是整個正規表示式

abc|def

abcdef

{}匹配前乙個字元m次,匹配前乙個字元m至n次,若省略n,則匹配m至無限次

abcabc

abbc

字符集。對應的位置可以是字符集中任意字元。

字符集中的字元可以逐個列出,

也可以給出範圍,如[abc]或[a-c]。[^abc]表示取反,即非abc。

所有特殊字元在字符集中都失去其原有的特殊含義。用\反斜槓轉義恢復特殊字元的特殊含義。

a[bcd]e

abeace

ade被括起來的表示式將作為分組,從表示式左邊開始沒遇到乙個分組的左括號「(」,編號+1.

分組表示式作為乙個整體,可以後接數量詞。表示式中的|僅在該組中有效。

(abc)

a(123|456)c

abcabc

a456c

這裡需要強調一下反斜槓\的作用:

a=re.search(r'(tina)(fei)haha\2','tinafeihahafei tinafeihahatina').group()

print(a)

結果:tinafeihahafei

正規表示式解析:

(tina)(fei)haha\2

第乙個分組為 'tina'

第二個分組為'fei'

緊接著是普通字元 'haha'

然後是'\2'即第二個分組'fei'

滿足匹配的是『tinafeihahafei』

2.2. 預定義字符集(可以寫在字符集[...]中)

字元型別

匹配字元

b表示式

匹配物件

\d數字:[0-9]

a\bc

a1c\d

非數字:[^\d]

a\dc

abc\s

匹配任何空白字元:[《空格》\t\r\n\f\v]

a\sc

a c\s

非空白字元:[^\s]

a\sc

abc\w

匹配包括下劃線在內的任何字字元:[a-za-z0-9_]

a\wc

abc\w

匹配非字母字元,即匹配特殊字元

a\wc

a c\a

僅匹配字串開頭,同^

\aabc

abc\z

僅匹配字串結尾,同$

abc\z

abc\b

匹配\w和\w之間,即匹配單詞邊界匹配乙個單詞邊界,也就是指單詞和空格間的位置。例如, 'er\b' 可以匹配"never" 中的 'er',但不能匹配 "verb" 中的 'er'。

\babc\b

a\b!bc

空格abc空格

a!bc

\b[^\b]

a\bbc

abc

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