正则表达式与通配符有部分相似之处,但正则表达式更复杂也更强大。
通配符用于(完全)匹配文件名,支持通配符的命令有:ls、find、cp等;
正则表达式用于在文件中(包含)匹配字符串,支持的命令有:grep、awk、sed等。
正则表达式元字符
正则表达式由正则表达式元字符组成,而元字符又分为基本正则表达式元字符和扩展正则表达式元字符,两者基本相同,有少许差异。
基本正则表达式元字符
| 元字符 | 作用 |
|---|---|
| |转义符 | |
匹配字符 |
|
| . | 匹配除换行符外任意一个字符 |
| [ ] | 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:] |
| [ ^ ] | 匹配[ ]中字符以外的任意字符 |
匹配次数 |
|
| * | 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符 |
| \? | 匹配前一个字符0次或1次 |
| \+ | 匹配前一个字符1次或多次 |
| \ | 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号 |
| \ | 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字 |
| \ | 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母 |
位置锚定 |
|
| ^ | 匹配行首,如^hello匹配以hello开头的行 |
| $ | 匹配行尾,如$:空白行,[:space:]*$:空(白)行 |
| \< 或 \b | 匹配词首 |
| \> 或 \b | 匹配词尾 |
| \<模式\> | 匹配完整单词(非特殊字符组成的连续字符),支持模式 |
分组与引用 |
|
| \(模式\) | 将1个或多个字符当作一个整体处理,支持模式 |
| \n | 第n组括号之间的模式(即分组)所匹配到的字符 |
扩展正则表达式元字符
| 元字符 | 作用 |
|---|---|
| |转义符 | |
匹配字符 |
|
| . | 匹配除换行符外任意一个字符 |
| [ ] | 匹配[ ]中任意一个字符,如[0-9]、[:punct:]、[:space:] |
| [ ^ ] | 匹配[ ]中字符以外的任意字符 |
匹配次数 |
|
| * | 匹配前一个字符0次或多次,如:.* 匹配任意长度任意字符 |
| ? | 匹配前一个字符0次或1次 |
| + | 匹配前一个字符1次或多次 |
| 表示前面的字符匹配n次,如[1][3-8][0-9]\{9\}表示手机号 | |
| 前面的字符至少出现n次,如[:digit:]\{6,\}表示6位以上数字 | |
| 前面的字符出现n-m次,如[:alpha:]\{6,8\}表示6-8位字母 | |
位置锚定 |
|
| ^ | 匹配行首,如^hello匹配以hello开头的行 |
| $ | 匹配行尾,如$:空白行,[:space:]*$:空(白)行 |
| \< 或 \b | 匹配词首 |
| \> 或 \b | 匹配词尾 |
| \<模式\> | 匹配完整单词(非特殊字符组成的连续字符),支持模式 |
分组与引用 |
|
| (模式) | 将1个或多个字符当作一个整体处理,支持模式 |
| \n | 第n组括号之间的模式(即分组)所匹配到的字符 |
或 |
|
| a | b |
浙公网安备 33010602011771号