代碼 | 說明 | 舉例 |
. | 比對除換行符外任意字元 |
[abc] | 字元集合,隻能表示一個字元位置,比對所包含的任意一個字元 | [abc]比對plain中的’a’ |
[^abc] | 字元集合,隻能表示一個字元位置,比對除去集合内字元的任意字元 | [^abc]可以比對plain中的p、l、a、i、或者n |
[a-z] | 字元範圍,也是個集合,表示一個字元的位置,比對所包含的任意一個字元 | 常用[A-Z][0-9] |
[^a-z] | 字元範圍,也是個集合,表示一個字元的位置,比對除去集合内字元的任意字元 |
\b | 比對單詞邊界 | \bb在文本中找到單詞中b開頭的b字元 |
\B | 不比對單詞邊界 | t\B包含t的單詞但是不以t結尾的t字元,例如write,\Bb不以b開頭的含有b的單詞,例如able |
\d | [0-9] 比對1位數字 |
\D | [^0-9]比對一位非數字 |
\s | 比對一位空白字元,包括換行符,制表符,空格[\f\r\n\t\v |
\S | 比對一位非空白字元 |
\w | 比對[a-zA-Z0-9_]包括中文的子 |
\W | 比對除\w之外的字元 |
重複
代碼 | 說明 | 舉例 |
* | 表示前面的正規表達式會重複 | 單詞中有e然後後邊非空字元 |
+ | 表示前邊的正規表達式重複至少一次 | e\w+單詞中e後邊至少有一個非空字元 |
? | 表示前邊的正規表達式會重複0次或1次 | e\w?單詞中e後邊至多有一個非空字元 |
{n} | 重複固定的n次 | e\w{1}單詞中e後邊隻能有一個非空字元 |
{n,} | 重複至少n次 | e\w{1,}等價于e\w+ e\w{0,}等價于e\w* e\w{0,1}等價于e\w? |
{n,m} | 重複n到m次 | e\w{1,10}單詞中e後邊至少1個,至多10個非空白字元 |
示例:
比對手機号碼:13552670000
\d{11}
比對中國座機025-83105736 0534-7777777
\d{3-4}-\d{7-8}
代碼 | 說明 | 舉例 |
x|y | 比對x或者y | wood took foot food 使用w|food 或者(w|f)ood |
捕獲(pattern) | 使用小括号指定一個子表達式,也叫分組,捕獲後會自動配置設定組号從1開始,可以改變優先級 |
\數字 | 比對對應分組 | (very)\1比對very very 但捕獲的組group是very |
(?:pattern) |
?exp (?'name’exp | 通過name通路分組 python文法必須是(?Pexp) |
斷言
代碼 | 說明 | 舉例 |
(?=exp) | 斷言exp一定在比對的右邊出現,也就是說斷言後邊一定跟個exp | f(?=oo)f後邊一定有oo出現 |
(?<=exp) | 斷言exp一定在比對的左邊出現,也就是說前面一定有個exp字首 | (?<=t)ook ook前一定有t出現 |
(?!exp) | 斷言exp一定不會出現在右側,也就是說斷言後面一定不是exp | \d{3}(?!\d)比對3位數字 斷言3位數字後邊一定不能是數字 |
(?<!exp) | 斷言exp一定不能出現在左側,也就是說斷言前面一定不能是exp | (?<!f) ood ood的左邊一定不是f |
(?#comment) | 注釋 |
貪婪與非貪婪
代碼 | 說明 | 舉例 |
*? | 比對任意次,但盡可能少重複 |
+? | 比對至少一次,但盡可能少重複 |
?? | 比對0次或1次 但盡可能少重複 |
{n,}? | 比對至少n次 但盡可能少重複 |
{n,m}? | 比對至少n次 至多m次 但盡可能少重複 |