[root@localhost ~]# grep "cd*" /tmp/test/b
aaabbbccc
abcabc
abcdefg
[root@localhost ~]# grep "a\?b" /tmp/test/b
aaabbbccc
abcabc
abcdefg
[root@localhost ~]# grep "a\+b" /tmp/test/b
aaabbbccc
abcabc
abcdefg
[root@localhost ~]# grep "a\{1,3\}b" /tmp/test/b
aaabbbccc
abcabc
abcdefg
[root@localhost ~]# grep "a\{2\}b" /tmp/test/b
aaabbbccc
[root@localhost ~]# grep "a\{2,\}b" /tmp/test/b
aaabbbccc
[root@localhost ~]# grep "a\{,2\}b" /tmp/test/b
aaabbbccc
abcabc
abcdefg
位置锚定字符:
行锚定:
行首锚定:^
行尾锚定:$
字锚定:
字首锚定:\<或\b
字尾锚定:\>或\b
[root@localhost ~]# grep "^a\{,2\}b" /tmp/test/b
abcabc
abcdefg
[root@localhost ~]# grep "c$" /tmp/test/b
aaabbbccc
abcabc
[root@localhost ~]# grep "\<T..S\>" /tmp/test/b
THIS IS A "TEST"
分组与前向引用字符:
\(\):将小括号中包含的内容作为一个不可分割的整体来处理;
\1,\2,\3...:前向引用
正则表达式处理引擎的内置变量,\1表示前面所出现的第一组小括号中括选的内容,\2表示前面所出现的第二组小括号中括选的内容;...
\(string1\(string2\)\):\1表示string1,\2表示string2;
\(string1\).*\(string2\):\1表示string1,\2表示string2;
[root@localhost ~]# grep "\(root\).*\1" /etc/passwd
root:x:0:0:root:/root:/bin/bash
或者:
\|:将其左右的字符或字符串当做整体来对待;
"C\|cat" C cat
[root@localhost ~]# grep "\(root\).*\1" /etc/passwd
root:x:0:0:root:/root:/bin/bash
[root@localhost ~]# grep "root\|ex" /etc/passwd
root:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/root:/sbin/nologin
ex:x:1000:1000:ex:/home/ex:/bin/bash
扩展的正则表达式元字符:ERE(所有的元字符不用转义\符号,除了字首锚定和字尾锚定以外,其余的全部和上边一样。)
字符匹配类:
.:可以匹配任意单个字符
[]:可以匹配任意指定范围内的单个字符;
[^]:可以匹配任意指定范围以外的单个字符;
下列所有的字符集都可以放置于[]之中用于匹配字符集范围内的单个字符;
[:lower:]:小写字母
[:upper:]:大写字母
[:alpha:]:大小写字母
[:digit:]:十进制数字
[:xdigit:]:十六进制数字
[:alnum:]:所有的十进制数字加上字母
[:punct:]:所有的标点符号
[:space:]:所有的空白字符
[a-z]:仅表示所有的小写字母
[A-Z]:仅表示的大写字母
[0-9]:仅表示所有的十进制数码