基礎字符
配對形式字串通常會用以 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 | 表示從字符串結束部分開始匹配。如果是存在換行,只匹配到換行前的結束字符串 |