python 中正則表達式的使用

  • 2020 年 1 月 10 日
  • 筆記

正則表達式的定義

正則表達式(re)(Regular Expression)。正則表達式是對字元串操作的一種邏輯公式,就是用事先定義好的一些特定字元、及這些特定字元的組合,組成一個「規則字元串」,這個「規則字元串」用來表達對字元串的一種過濾邏輯。 在python中,可以通過內置的re模組引用。 功能:

  • 可以為想要匹配的 相應字元串集指定規則
  • 該字元串集可能包含英文語句,e-amil地址,命令或者任何你想要的東西。 正則表達式——元字元 1. [ ]
  • 常用來指定一個字符集:[abc]; [a-z]
  • 元字元在字符集中不起作用:[akm$]
  • 補集匹配不在區間範圍內的字元:[^5] 2. ^
  • 匹配行首。除非設置MULTILINE標誌,它只是匹配字元串的開始。在MULTILINE模式里,它也可以直接匹配字元串中的每個換行。 3. & 重複的使用
  • *
  • 指定前一個字元可以被匹配零次,或更多次,而不是只有一次,匹配引擎會試著重複儘可能多的次數 (不會超過整數的界定範圍,20億) 例如: a[bcd]*b —– "abcbd"
  • 匹配行尾,行尾被定義為要麼是字元串,要麼是一個換行字元後面的任何位置。 * +* 表示匹配一或更多次。 注意: 和——之間的不同;匹配零或更多次,所以可以根本就不出現,而+則要求至少出現一次。 ?** 匹配一次或零次;可以認為它用於標識某事物是可選的。 {m,n} 其中m和n是十進位整數。該限定符的意思是至少有m個重複,至多到n個重複。a/{1,3}b 忽略m會認為下邊界是0,而忽略n的結果將是上邊界為無窮大(實際上是20億) {0,}等同於,{1,}等同於+,而{0,1}則與?相同。如果可以的話,最好使用*,+,或?

轉義字元 的使用

  • 可以用 取消所有的元字元:[
  • d 匹配任何十進位數,它相當於類 [0-9]
  • D 匹配任何非數字字元,它相當於類[^0-9]
  • s 匹配任何空白字元,它相當於類[tnrfv]
  • S 匹配任何非空白字元,它相當於類[^tnrfv]
  • w 匹配任何字母數字字元,它相當於類[a-z A-Z 0-9]
  • W 匹配任何非字母數字字元,它相當於類[^a-z A-Z 0-9]

python中re模組的使用

在Python中使用正則表達式,python提供了re模組,包含所有正則表達式的功能。

  • 由於python的字元串本身也用 轉義,所以要注意,例如: s = 'ABC-001' # Python的字元串 對應的正則表達式字元串變成: 'ABC-001' 因此,為了避免衝突,建議使用Python中的 r 前綴,就不用考慮轉義的問題了!
  • python中自帶了re模組,可以通過import re來使用這個模組,re模組有許多方法,下圖給出了所有的方法,在ipython中可以查看具體每個方法的具體含義。

以下列出了一些常用的方法:

  • 1.re.findall(pattern,string,flags=0) :返回一個包含所有不重複匹配字元串的元組。 例1:
    1. re.match(pattern, string, flags=0) : 從字元串開頭匹配正則表達式,如果匹配返回一個匹配的對象,如果沒有匹配返回None,常結合if判斷語句使用 例2: