原子
原子,也叫原子字符,是正规表达式函数操作的对象。原子字符大致可以分为五类
原子是正则表达式的最小单位
每个正则模式中,至少要包含一个原子
原子必须由可打印和非打印字符组成
原子 | 说明 |
---|---|
普通字符 | 可打印字符,比如大小写字母,数字等 |
非打印字符 | 即存在但不可显示字符,比如换行,换页等 |
特殊字符或元字符 | 这类字符在正则表达式中有特殊含义,必须转义 |
通配字符 | 通用字符或者’类字符’,即一个原子匹配一类字符 |
自定义字符 | 可以是一个,也可以是集合,用方括号[] 包起来 |
- 非打印字符
非打印字符,也叫不可见字符,主要是一些格式控制符。
分类 | 说明 |
---|---|
\n | 匹配一个换行符 |
\r | 匹配一个回车符 |
\t | 匹配一个制表符 |
\f | 匹配一个换页符 |
\v | 匹配一个垂直制表符 |
注意:只有双引号里的字符串才可以解析转义字符,单引号内只解析2种:单引号自身’'和 转义符自身\
- 特殊字符或元字符
元字符:元字符在正则中有特殊用途,
是用来修饰原子的,元字符做原子时,不能直接使用,必须转义
,使其变成普通原子字符
分类 | 说明 |
---|---|
特殊字符 | <br/> 匹配是否出现<br/>标记 |
元字符 | \., +, ?, $, * |
- 通配字符
通配字符 | 说明 |
---|---|
\d | 等价于[0-9] |
\D | 等价于[^0-9] |
\w | 匹配任意一个数字、字母、下划线,等价于[0-9a-zA-Z_] |
\W | 等价于[^0-9a-zA-Z_] |
\s | 匹配任意空白字符[\n\r\t\f\v] |
\S | 等价于[^\n\r\t\f\v] |
- 自定义原子字符
自定义原子是一个集合,可以匹配一个,也可以匹配多个字符
自定义原子列表,使用方括号’[]’,括号内所有原子地位平等,顺序可随意调整;
自定义原子列表中,可以使用排除符号’^’,过滤掉不符合要求字符。
元字符
元字符是修饰原子字符的.元字符不允许单独使用,必须配合原子,共同工作.如果原子中包括元字符,必须在元字符加
\
进行转义
元字符 | 作用 |
---|---|
* | 匹配0次,1次或多次前面的原子,等价于{0,},例如/Go*gle/ |
+ | 匹配1次或多次前面的原子,等价于{1,} |
? | 匹配0次或1次前面的原子,等价于{0,1} |
. | 匹配除换行符以外的任意一个字符 |
| | 匹配2个或多个分支 |
{n} | 表示前面原子出现n次 |
{n,} | 表示前面原子出现不少于n次 |
{n,m} | 表示前面原子出现至少出现n次,最多出现m次 |
^ | 匹配字符串开始位置 |
$ | 匹配字符串结束位置 |
\b | 匹配单词边界 |
\B | 匹配除单词边界以外的字符 |
[] | 匹配方括号内指定的任意一原子 |
[^] | 匹配方括号内指定原子以外的原子 |
() | 匹配其整体为一个原子,即多个原子组成的大原子 |
- 模式匹配优先级
优先级 | 元字符 | 描述 |
---|---|---|
1 | \ | 转义字符 |
2 | (),(?:),(?=),[] | 模式单元与原子表 |
3 | *,+,?,{n},{n,},{n,m} | 重复匹配 |
4 | ^,$,\b,\B | 边界匹配 |
5 | | | 模式选择 |