Regular Expression

基礎字符

配對形式字串通常會用以 r 開始的原始字串 (raw string) ,例如 r”str” 。此外,配對形式字串需要用到很多中介字元 (metacharacter) ,如下:

. ^ $ * + ? { } [ ] \ | ( )

使用字串是避免出現過多的反斜線,反斜線預設為跳脫序列

中介字元 說明
. 除了新行符號外的任何字元,例如 ‘.’ 配對除了 ‘\n’ 之外的任何字元
^ 匹配字串開頭的子字串(相當於\A)或排除指定字元或群組在[^],例如 ‘a[^b]c’ 配對除了 ‘abc’ 之外的任何 a 開頭 c 結尾的三字元組合
$ 匹配字串結尾的子字串,例如 ‘abc$’ 配對以 ‘abc’ 結尾的字串
* 單一字元或群組出現任意次數,例如 ‘ab*’ 配對 ‘a’ 、 ‘ab’ 或 ‘abb’ 等等
+ 單一字元或群組出現至少一次,例如 ‘ab+’ 配對 ‘ab’ 或 ‘abb’ 等等
? 單一字元或群組 0 或 1 次,例如 ‘ab+’ 配對 ‘a’ 或 ‘ab’
{m,n} 單一字元或群組的 m 到 n 倍數,例如 ‘a{6}’ 為連續六個 ‘a’ , ‘a{3,6}’ 為三到六個 ‘a’
[] 對中括弧內的字元形成集合,例如 ‘[a-z]’ 為所有英文小寫字母
\ 特別序列的起始字元
| 單一字元或群組的或,例如 ‘a|b’ 為 ‘a’ 或 ‘b’
() 對小括號的字元形成群組

特別序列

中介字元 說明
\number 群組的序數
\A 表示從字符串起始位置開始匹配
\b 表示匹配一個單詞邊界,例如 r’\bfoo\b’ 配對 ‘foo’ 或 ‘bar foo baz’
\B 表示匹配非單詞邊界, 作為字元的界線字元,例如 r’py\B’ 配對 ‘python’ 或 ‘py3’
\d 匹配數字,相當於[0-9]
\D 匹配非數字,相當於[^0-9]
\s 各種空白符號,包托新行符號\n
\S 非空白符號
\w 任意文字字元, 相當於相當於[a-zA-z0-9_]
\W 非文字字元,包括空白符號, 相當於[^\w]
\Z 表示從字符串結束部分開始匹配。如果是存在換行,只匹配到換行前的結束字符串

Reference

發佈留言