扩展正则表达式(ERE,Basic Regular Expression)
扩展正则表达式(ERE)添加了+、?、|、()、{}
元字符。且awk,sed,grep
命令支持扩展正则表达式,下面详细介绍它们的作用:
+
表示重复1个或1个以上的前1个字符。查找god、good、goood等字符串的行 grep -E ‘go+d’ temp.txt
?
表示0个或1个的前1个字符。查找god、good两个字符串的行。grep -E ‘go?d’ temp.txt
|
表示用或(or)的方式找出匹配字符串。查找god、good这两个字符串的行。grep -E ‘gd|good’ temp.txt
()
找出‘组’ 字符串。找出(glad)或(good)这两个字符串的行。g与d是重复的,所以可以将la与oo列于()当中,并以|来分隔 grep -E ‘g(la|oo)d’ temp.txt
()+
多个重复组的判别。查找A开头C结尾,中间有一个以上的‘xyz’字符串的行 echo ‘AxyzxyzxyzC’ | grep -E ‘A(xyz)+C’
{n}
匹配连续n个的前一个RE字符。查找包含3个数字的行 grep -E ‘[0-9]{3}’ temp.txt
{n,m}
匹配连续n到m个的前一个RE字符。查找包含3到5个数字的行 grep -E ‘[0-9]{3,5}’ temp.txt
{n,}
匹配连续n个以上的前一个RE字符。查找包含至少3个数字的行 grep -E ‘[0-9]{3,}’ temp.txt
区别与联系:
(1)扩展正则表达式的表示字符范围比基础正则表达式多。如+、?、|、()等。
(2)扩展正则表达式中的元字符在转义字符""处理下会被当做普通元字符。
(2)使用扩展正则表达式可以更大范围满足匹配关系,使表达式表现形式更简洁。如使用“|”或完成同时匹配。
(3)指令操作时表现形式略有不同。Linux部分指令有支持参数,可以简化书写。如sed -r、grep -E参数表示支持扩展正则表达式。下文会介绍带支持扩展正则表达式参与与不带支持参数的指令书写上的区别。