扩展正则表达式
扩展正则表达式就是在基本正则表达式的基础上,增加了一些元字符,而且有部分参数是不需要添加转义符使用的。
字符匹配
代码
说明
.
匹配任意单个字符
[ ]
匹配范围内的任意单个字符
[^ ]
匹配范围外的任意单个字符
字符串不匹配
否定顺序环视:
(?!(unfavored|unwanted)) (?![a-z]*(unfavored|unwanted))[a-z]{,12} (?![a-z]*(unfavored|unwanted))
例如:不匹配baidu:
^(?!baidu).*$
匹配次数
代码
说明
*
匹配前面的字符任意次(0、1、或多次);
.*
任意长度的任意字符;
+
匹配前面的字符至少1次
?
匹配前面的字符0次或者1次,即前面的字符可有可无;
{m}
其前面的字符出现m次,m为非负整数;
{m,n}
其前面字符出现最少m次最多n次,{m,}最少m次,{o,n}最多n次
位置锚定
代码
说明
^
行首
$
行尾
<, b
词首
>,b
词尾
分组及引用
代码
说明
( )
分组
1,2,…
后向引用
注意:特殊用法 C|cat:表示C或cat ,表示整个左侧或整个右侧。 (C|c)at:表示Cat或cat
其他
列出几个扩展特殊符号:
代码
说明
+
于 . * 作用类似,表示 一个或多个重复字符。
?
于 . * 作用类似,表示0个或一个字符。
|
表示或关系,比如 'gd
()
将部分内容合成一个单元组(abc
比如 要搜索 glad 或 good 可以这样 'g(la
oo)d' ()的好处是可以对小组使用 + ? * 等。
比如要搜索A和C开头结尾,中间有至少一个(xyz) 的串,可以这样 : 'A(xyz)+C'
正则表达式元字符
元字符
普通转义
代码
说明
.
匹配除换行符以外的任意字符
w
匹配字母或数字或下划线或汉字
s
匹配任意的空白符
d
匹配数字
b
匹配单词的开始或结束
^
匹配字符串的开始
$
匹配字符串的结束
特殊字符转移义
比如[,可以使用[,如果[不好使,可以试试[,这个在不同命令中不一样,awk -F '' 中必须是[
重复次数
代码
说明
*
重复零次或更多次
+
重复一次或更多次
?
重复零次或一次
{n}
重复n次
{n,}
重复n次或更多次
{n,m}
重复n到m次
反义
代码
说明
W
匹配任意不是字母,数字,下划线,汉字的字符
S
匹配任意不是空白符的字符
D
匹配任意非数字的字符
B
匹配不是单词开头或结束的位置
[^x]
匹配除了x以外的任意字符
[^aeiou]
匹配除了aeiou这几个字母以外的任意字符
其他
代码
说明
a
报警字符(打印它的效果是电脑嘀一声)
b
通常是单词分界位置,但如果在字符类里使用代表退格
t
制表符,Tab
r
回车
v
竖向制表符
f
换页符
n
换行符
e
Escape