正则表达式语法速查
1. 基本元字符
| 符号 |
说明 |
示例 |
| . | 匹配任意单字符 | a.b 匹配 "aXb" |
| ^ | 匹配字符串开头 | ^abc 匹配以abc开头 |
| $ | 匹配字符串结尾 | abc$ 匹配以abc结尾 |
| * | 0次或多次 | ab* 匹配 "a", "ab", "abb"... |
| + | 1次或多次 | ab+ 匹配 "ab", "abb"... |
| ? | 0次或1次 | ab? 匹配 "a", "ab" |
| {n} | 恰好n次 | a{3} 匹配 "aaa" |
| {n,} | 至少n次 | a{3,} 匹配 "aaa", "aaaa"... |
| {n,m} | n到m次 | a{2,4} 匹配 "aa", "aaa", "aaaa" |
| [...] | 字符集中任意字符 | [abc] 匹配 "a/b/c" |
| [^...] | 不在字符集中 | [^abc] 匹配除abc外 |
| | | 左边或右边 | a|b 匹配 "a" 或 "b" |
| (...) | 捕获分组 | (ab)+ 匹配 "ab", "abab" |
2. 转义字符
| 符号 |
说明 |
示例 |
| \d | 数字[0-9] | \d{3} 匹配 "123" |
| \D | 非数字[^0-9] | \D+ 匹配 "abc" |
| \w | 单词字符[a-zA-Z0-9_] | \w+ 匹配 "abc123" |
| \W | 非单词字符 | \W+ 匹配 "!@#" |
| \s | 空白字符 | a\sb 匹配 "a b" |
| \S | 非空白字符 | \S+ 匹配 "abc" |
| \b | 单词边界 | \bcat\b 匹配 "cat" |
| \B | 非单词边界 | \Bcat\B 匹配 "concatenate" |
| \n | 换行符 | 匹配换行 |
| \t | 制表符 | 匹配制表 |
| \\ | 反斜杠本身 | \\ 匹配 "\" |
3. 正则标志
| 标志 |
说明 |
| re.IGNORECASE | 忽略大小写 |
| re.MULTILINE | ^和$匹配每行 |
| re.DOTALL | .匹配含换行符 |
4. 常用示例
| 目的 |
正则表达式 |
示例 |
| 邮箱 | [\w.+-]+@[\w-]+\.[\w.-]+ | test@example.com |
| 手机号(中国) | 1[3-9]\d{9} | 13812345678 |
| 日期 YYYY-MM-DD | \d{4}-\d{2}-\d{2} | 2024-01-22 |
| IP地址 | \d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3} | 192.168.1.1 |
| URL | https?://[\w.-]+\.[\w./-?=%&]+ | https://example.com |
| 十六进制颜色 | #[0-9a-fA-F]{6} | #ff0000 |
| 整数 | \d+ | 12345 |
| 浮点数 | \d+\.\d+ | 3.14159 |
5. 分组与引用
| 语法 |
说明 |
示例 |
| (...) | 捕获分组 | (\d{2})-(\d{2}) 匹配 "12-34" |
| (?:...) | 非捕获分组 | (?:ab)+ 匹配 "abab" |
| (?P<name>...) | 命名分组 | (?P<year>\d{4}) |
| \1, \2 | 引用前面分组 | (\d)\1 匹配 "11", "22" |
| (?=...) | 正向预查 | a(?=b) 匹配 "ab"中"a" |
| (?!...) | 负向预查 | a(?!b) 匹配 "ac"中"a" |
💡 提示: Raw Mode启用时, 正则字符串按原样处理;禁用时需注意Python转义。建议使用原始字符串 r"..." 编写正则表达式。