面對一堆數據,要從哪裡下手,如何下手,怎想下手都是問題,想要解決數據的問題,應該沒有什麼捷徑,最好的方法是學會正規化表達(简体中文称为:正则化,英文稱為Regular Expression, 簡寫 Regex)。正規化表達是程式利用一些特定的符號幫我們從繁雜的數據中取出我們想有的部份,這些特定的符號有:
符號 | 意義 |
---|---|
. | 代表任何字元 . 出現在正規化中代表一個字元 a.c 表示 a 和 c 之間要有一個任意字元:可以是 abc 也可以是 adc…等 |
^ | 字串的起始。若在 [ ] 內則代表『非』 ^s 字串要以 s 為開頭,smile 符合,mile 則不符規則 |
$ | 字串的結束 s$ 字串要以 s 為結尾,boys 符合,boy 則不符規則 |
* | 代表出現0次以上 a* 表示在字串中 a 要出現 0 次以上 |
+ | 代表出現1次以上 a+ 表示在字串中 a 要出現 1 次以上 |
? | 出現 0 次或 1次 a? 表示在字串中 a 要出現 0 次或1次 |
{n} | 出現 n 次 z{3} 代表 z要在字串中出現3次 : zzz |
{n,m} | 出現 n 次到 m 次 Z {3,5} 代表問號要在字串中出現3次到 5次 ,可以是 ZZZ 也可是 ZZZZ 或 ZZZZZ |
{n,} | 出現 n 次以上 z{3,} 代表 z要在字串中出現3次以上 |
\d | 數字 |
\D | 非數字 |
\w | Unicode 定義的字、數字與底線 ˍ,若系統設定是 ASCII 則為26個大小寫英文字母、數字與底線 ˍ |
\W | 非 \w 表達的字元 |
\s | 任何空白字元,包括空格、tab、換行等 |
\S | 非空白字元 |
| | 或, | 的前後兩者,先比對到的就輸出 |
[ ] | 一個集合 |
還有更多的特定符號,可參考 Python 官方網頁
練習正規表達時,很多時候會不知道自己哪裡寫錯了,總是要一改再改表達式,現在有一個網站 Regex101 提供了我們現上測試的功能,可提昇初學者不少的速度
範例待續…