字符
语法 |
说明 |
表达式实例 |
匹配字符串 |
. |
匹配任意字符,除了\n(换行符) |
- |
- |
\ |
转义字符 |
- |
- |
特定字符
语法 |
说明 |
表达式实例 |
匹配字符串 |
\d |
匹配任意数字,等价于 [0-9] |
- |
- |
\D |
匹配任意非数字 |
- |
- |
\s |
匹配任意空白字符,等价于 [\t\n\r\f]. |
- |
- |
\S |
匹配任意非空字符 |
- |
- |
\w |
匹配字母数字及下划线 |
grep '\w' passwd |
- |
\W |
匹配非字母数字及下划线 |
- |
- |
\z |
匹配字符串结束 |
- |
- |
\G |
匹配最后匹配完成的位置 |
- |
- |
\n |
匹配一个换行符 |
- |
- |
\t |
匹配一个制表符 |
- |
- |
\b |
代表着单词的开头或结尾,也就是单词的分界处 |
- |
- |
例如him,history,high等等。用hi来查找的话,这里边的hi也会被找出来。如果要精确地查找hi这个单词的话,我们应该使用\bhi\b。
数量词
语法 |
说明 |
表达式实例 |
匹配字符串 |
* |
匹配前一个字符 0 个或多个的表达式 |
- |
- |
+ |
匹配 1 个或多个的表达式 |
- |
- |
? |
匹配 0 个或 1 个由前面的正则表达式定义的片段,非贪婪方式 |
- |
- |
{n} |
精确匹配 n 个前面表达式 |
- |
- |
{n, m} |
匹配 n 到 m 次由前面的正则表达式定义的片段,贪婪方式 |
- |
- |
.* |
贪心算法,任意字符串 |
- |
- |
.*? |
非贪心算法 |
- |
- |
# grep 'roo*' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
chrony:x:998:996::/var/lib/chrony:/sbin/nologin
grep 'roo\+' passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
边界匹配
语法 |
说明 |
表达式实例 |
匹配字符串 |
^ |
匹配字符串的开头 |
|
|
$ |
匹配字符串的末尾 |
|
|
\A |
匹配字符串开始 |
- |
- |
\Z |
匹配字符串结束,如果是存在换行,只匹配到换行前的结束字符串 |
- |
- |
空行的表示:^$
分组
语法 |
说明 |
表达式实例 |
匹配字符串 |
[...] |
用来表示一组字符 |
- |
- |
( ) |
匹配括号内的表达式,也表示一个组 |
- |
- |
竖线 |
表示竖线两边任意匹配一个 |
- |
- |
范围内字符
数字字符:[0-9]
小写字符:[a-z]
大写字符:[A-Z]
反向字符[^0-9] 不包含
grep '[0-9]' passwd
grep '[123]' passwd
grep '[A-Z]' passwd