0%

扩展正则表达式

基础正则表达式


字符 含义 字符 含义
^ 只匹配行首 $ 只匹配行尾
* 匹配0个或多个在*之前的字符 [ ] 只匹配[]内字符,可以是一个单字符,也可以是符号序列,使用-表示[ ]内字符序列范围,如用[1-5]代替[12345]
\ 只用来屏蔽一个元字符的特殊含义 . 只匹配任意单字符
pattem\ {n\ } 只用来匹配前面pattem出现次数,n为次数 pattem\ {n,\ } 含义同上,但次数最少为n
pattem\ {n,m\ } 含义同上,但pattem出现次数在n和m之间

与基础正则表达式简单对比


正规表示法:

过滤掉文件 regular_express.txt 中的空行和注释行:

# grep -v '^$' regular_express.txt |grep -v '^#'

需要使用到管线命令来搜寻两次! 那么如果使用延伸型的正规表示法,我们可以简化为:

# egrep -v '^$|^#' regular_express.txt

利用支持延伸型正规表示法的 egrep 与特殊字符 “|” 的组功能来区隔两组字符串,如此一来,就方便了许多。

此外,grep 默认仅支持基础正则表达式,如果要使用扩展性正则表达式,可以使用 grep - E,grep -Eegrep 相当于命令别名关系。

扩展规则


+ 表示重复一个或一个以上的前一个 RE 字符

# egrep -n 'go+d' regular_express.txt

普通写法:

# grep -n 'goo*d' regular_express.txt

上面两条命令匹配的字符串是:godgoodgoood

? 表示重复零个或一个前一个 RE 字符

# egrep -n 'go?d' regular_express.txt

上述命令匹配的字符串是:gdgod.

| 表示用或的方式找出数个字符串

# egrep -n 'gd|good' regular_express.txt

匹配有 gdgood 的行

( ) 表示找出群组字符串

# egrep -n 'g(la|oo)d' regular_express.txt

匹配有 gladgood 这两个字符串

( )+ 多个重复群组判别

# echo 'AxyzxyzxyzxyzC'|egrep 'A(xyz)+C'

# echo 'AxyzxyzxyzxyzC'|egrep 'A(xz)+C'

要找开头是 A 结尾是 C 中间有一个以上的 ‘xyz’ 或 ‘xz’ 字符串的意思。


- - - - - - - - - 本文结束啦感谢您阅读 - - - - - - - - -