python 正規表示式

2021-07-04 23:34:34 字數 2032 閱讀 8666

正規表示式(re)是一種小型的、高度專業化的程式設計序語言,它內嵌在python中,並通過re模組實現

它可以為想要匹配的相應字串集指定規則

該字串集可以包含英文語句、e-mail位址、命令或任何你想要搞定的東西

可以使用re以各種方式來修改或分割字串

[ ]
>>> 

import re

>>> s = r'abc'

>>> re.findall(s,"aaabcadfdffdsfscbabcccba")

['abc', 'abc']

>>> re.findall(r"a[bc]c","abcaccaacv")

['abc', 'acc']

^ 匹配行首

查詢開頭是否有某個規則的字串

$ 匹配行尾

>>> s = "hello hello2"

>>> r = r'hello'

>>> re.findall(r,s)

['hello', 'hello']

>>> r = r'^hello'

>>> re.findall(r,s)

['hello']

>>> r = r'^hello2'

>>> re.findall(r,s)

>>> r = r'hello2$'

>>> re.findall(r,s)

['hello2']

>>> s = "abacada^aea$af"

>>> r = r'a[bcf^d]'

>>> re.findall(r,s)

['ab', 'ac', 'ad', 'a^', 'af']

>>> r = r'a[^bcd]'

>>> re.findall(r,s)

['a^', 'ae', 'a$', 'af']

>>> r = r'a[f$]'

>>> re.findall(r,s)

['a$', 'af']

>>> r = r'af$'

>>> re.findall(r,s)

['af']

[ ]的簡寫形式
>>> r = r'[0-9]'

>>> r = r'[a-z]'

>>> r = r'[a-z]'

指定前乙個字元可以被匹配零次或多次,而不是只有一次。匹配引擎會嘗試這重複盡可能多得次數。

>>> r = r'ab*'

>>> re.findall(r,'a')

['a']

>>> re.findall(r,'ab')

['ab']

>>> re.findall(r,'abbbbb')

['abbbbb']

>>> r = r'010-\d'

>>> s = '010-12345678'

>>> re.findall(r,s)

['010-12345678']

編譯正規表示式

為什麼要進行編譯呢?因為之前的正規表示式如果使用率較高,那麼編譯之後用起來速度更快。compile()

>>> r = r'010-\d'

>>> s = '010-12345678'

>>> p = re.compile(r)

>>> p.findall(s)

['010-12345678']

編譯的過程中,可以加一些屬性,讓它更靈活。比如,不區分大小寫的匹配:

>>> csvt_re = re.compile(r"csvt",re.i)

>>> csvt_re.findall("csvt")

['csvt']

>>> csvt_re.findall("csvt")

['csvt']

反斜槓的麻煩

字串前加「r」反斜槓就不會被任何特殊方式處理。

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