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