正则表达式教程
目录
警告
本文最后更新于 2022-09-04,文中内容可能已过时。
用来描述字符串模式匹配规则的表达式。
1.规则
1.1 单个字符匹配
| 正则表达式 | 意义 | 等价 | 
|---|---|---|
| a | 单个指定字母 | |
| 0 | 单个指定数字 | |
| \\ | \ | |
| \* | * | |
| \. | . | |
| \n | 换行符 | |
| \f | 换页符 | |
| \t | 制表符 | |
| . | 单个除了换行符之外的任何字符 | |
| \d | 单个数字 | [0-9] | 
| \D | 单个非数字字符 | [^0-9]、[^\d] | 
| \w | 单个字母或数字或下划线 | [a-zA-Z0-9_] | 
| \W | 单个非字母非数字非下划线字符 | [^a-zA-Z0-9_]、[^\w] | 
| \s | 单个空白字符(空格、换行符、换页符、制表符) | [ \n\f\t] | 
| \S | 单个非空白字符 | [^ \n\f\t]、[^\s] | 
1.2 匹配次数
| 正则表达式 | 意义 | 
|---|---|
| ? | 匹配0或1次 | 
| * | 匹配任意次(大于等于0) | 
| + | 至少匹配一次(大于等于1) | 
| {a} | 匹配a次 | 
| {a,b} | 至少匹配a次,至多匹配b次([a,b]) | 
| {a,} | 至少匹配a次(大于等于a) | 
| {0,b} | 至多匹配b次([0,b]) | 
1.3 边界匹配
| 正则表达式 | 意义 | 
|---|---|
| \b | 单词边界 | 
| \B | 非单词边界 | 
| ^ | 字符串开头 | 
| $ | 字符串结尾 | 
| /规则/m | 多行模式 | 
| /规则/i | 忽略大小写 | 
| /规则/g | 全局模式 | 
1.4 逻辑关系
| 正则表达式 | 意义 | 
|---|---|
| ` | ` | 
| [^] | 逻辑非 | 
2.高级用法
- 回溯引用
- 前向查找
- 后向查找
3.代码中使用
3.1 C++
|  |  | 
3.2 Java
3.3 Python
4.常用正则表达式
- 整数:^-?\d+$- 自然数(非负整数):^\d+$
- 正整数:^[0-9]*[1-9][0-9]*$
- 非正整数:^((-\d+) ?(0+))$
- 负整数:^-[0-9]*[1-9][0-9]*$
 
- 自然数(非负整数):
- 浮点数:^(-?\d+)(\.\d+)?$- 非负浮点数:^\d+(\.\d+)?$
- 正浮点数:^(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+) ?([0-9]*[1-9][0-9]*))$
- 非正浮点数:^((-\d+(\.\d+)?) ?(0+(\.0+)?))$
- 负浮点数:^(-(([0-9]+\.[0-9]*[1-9][0-9]*) ?([0-9]*[1-9][0-9]*\.[0-9]+) ?([0-9]*[1-9][0-9]*)))$
 
- 非负浮点数:
- 下划线、数字和大小写字母:^\w+$- 数字和大小写字母:^[A-Za-z0-9]+$- 大小写字母:^[A-Za-z]+$- 大写字母:^[A-Z]+$
- 小写字母:^[a-z]+$
 
- 大写字母:
 
- 大小写字母:
 
- 数字和大小写字母:
- 中文字符:[\u4e00-\u9fa5]
- 双字节字符:[^\x00-\xff],可以用来计算字符串的长度
- 空行:\n[\s ? ]*\r,可以用来删除空白行
- HTML标记:/ <(.*)>.* <\/\1> ? <(.*) \/>/,仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
- 首尾空格:(^\s*) ?(\s*$)^\s* ?\s*$,可以用来删除行首行尾的空白字符
- 电子邮件:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
- 网址(URL):(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\S*)?$[a-zA-z]+://[^\s]*
- 命名规则(字母开头,长度5-16,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
- 中国座机号码:\d{3}-\d{8} ?\d{4}-\d{7}
- QQ号:[1-9][0-9]{4,}
- 中国邮政编码:[1-9]\d{5}(?!\d)
- 中国身份证:\d{15} ?\d{18}
- IP地址:\d+\.\d+\.\d+\.\d+
5.辅助网站
- Regexper:正则表达式规则可视化。