正则表达式
基本正则表达式元字符:字符匹配、匹配次数、位置锚定、分组及引用
字符匹配
字符 | 说明 |
---|---|
. | 匹配任意单个字符 |
[] | 匹配指定范围内的任意单个字符 |
[^] | 匹配指定范围外的任意单个字符 |
[[:upper:]]:所有大写字母
[[:lower:]]:所有小写字母
[[:alpha:]]:所有字母
[[:digit:]]:所有数字
[[:alnum:]]:所有的字母和数字
[[:space:]]:所有空白字符
[[:punct:]]:所有标点符号
匹配次数
字符 | 说明 |
---|---|
* | 匹配其前的字符任意次;0,1,多次 |
.* | 匹配任意长度的任意字符 |
? | 匹配其前面的字符0次或1次 |
\ + | 匹配其前面的字符一次或多次 |
\{m\} | 匹配其前的字符m次;grep“x\{1\}y” |
\{m,n\} | 匹配其前面的字符至少m次,至多n次 |
\{0,n\} | 匹配其前面的字符至多n次 |
\{m,\} | 匹配其前面的字符至少m次 |
例:
[root@localhost ~]# grep "x*y" 1.1
abxy
aby
xxxxxy
ya
[root@localhost ~]# grep "x\?y" /root/1.1
abxy
aby
xxxxxy
ya
[root@localhost ~]# grep "x\+y" 1.1
abxy
xxxxxy
位置锚定
字符 | 说明 |
---|---|
^ | 行首锚定;用于模式的最左侧 ; grep “^root /etc/passwd” |
$ | 行尾锚定;用于模式最右侧 ; grep "root$" /etc/passwd |
^$ | 空白行 |
1 | 空行或包含空白字符的行 |
\ < | 词首锚定,用于单词模式的最左侧 ; grep "\<root" /etc/passwd |
\ > | 词尾锚定,用于单词模式的最右侧 ; grep "root\>" /etc/passwd |
\<PATTERN>\ | 匹配完整单词 ; grep "\<root\>" /etc/passwd |
分组及引用
字符 | 说明 |
---|---|
\(\) | 将一个或多个字符捆绑在一起,当作一个整体进行处理 |
\(xy\)*ab | 命令行中括号有特殊意义所以用转义符 "\" |
\1 | 模式从左侧起,第一个左括号以及与之匹配的右括号之间的模式所匹配到的字符 |
\2 | 模式从左侧起,第二个左括号以及与之匹配的右括号之间的模式所匹配到的字符 |
…… | …… |
基本正则表达式 grep 和扩展正则表达式 egrep 或 grep -E的区别 :有无转义符 “\”
grep | egrep/grep -E |
---|---|
\ + | + |
\ {m\} | {m} |
\ {m,n\} | {m,n} |
[:space:] ↩︎