linux笔记----正则表达式(grep-2)

在正则表达式grep-1中介绍了常用的option选项,在grep-2中总结下pattern的不同情形。与grep-1中一样,匹配的都由红色显示。

1. [ ]

   [ ]是一字符列表表达式,用以匹配[ ]里包含的任一字符,例如[abc],表示匹配字母a或b或c。在默认的 C 语言环境下(不是c编程语言,而是 c  locale,由LC_ALL设定,可由locale命令查看LC_ALL项) 在默认C的情况下,[abc]等价为[a-c],但在其他的环境下[a-c]代表的是字典序,也就是[aBbc],除了字母,当然还有数字[0-9]等。

   

   

除了这种显示的书写外,[ ]表达式还包含一些定义好的字符类,这些字符类都是可以被[ ]表达式解释的,如下。

    [:alpha:]:表示任一字母。

   

   [:digit:]:表示任一数字。

    

    [:alnum:] :表示任一字母或数字,可以由 \w简指。注意由于w前的“\”为特殊字符,所以要用 \ 转义

     

      \W 表示 [^[:alnum]],其中的^表示相反的意思。如下可见字符和数字都不匹配。

       linux笔记----正则表达式(grep-2)_第1张图片

    [:lower:] :表示小写字母

    [:upper:] :表示大写字母

    [:space:] :表示空白,包括tap,空格,空行。

    注意:由于这里存在 “-” 符号,如[a-z]是表示从a到z,所以为避免混淆,习惯上将''-‘' 写在最后,如,想表达a,-,z中的某个,[az-]这样写不存在歧义。

               ^ 有表示行首的意思,所以习惯上不将其写在最前边,除非目的就是表达行首。

2、 $与^

    $在grep中代表行尾,^ 代表“取相反的意思”,也表示行首。

    查找以bash结尾的。

   

    查找以daemon开始的。

    

    查找不以数字开始的: 红色的代表行首,蓝色的代表不是数字。

    

3.()

    将()里面的东西视为一体。

    

    

4、其他

    . :点代表任意的一个字符。

     

    *:代表其前面的重复0到多次,即可以不出现,也可以连续出现。

      不出现.

      

       重复出现

          

     ?:代表前面的或不出现,或出现,但只能出现一次。

          在grep2中写入如下内容:

          linux笔记----正则表达式(grep-2)_第2张图片

         

          可见gooood并没有出现。

     +:代表至少出现一次。

         

    {n}:恰好出现n次。

         

    {n,}:出现次数至少是n次。

         

    {n,m}:出现至少n次,最多m次。注意蓝色横线和黑色竖线俩个例子的区别。

           

       

   说明:后面的例子用扩张grep时,即grep 带 -E参数,对特殊字符,如{} 就没用\来转义,但一般的grep(不带-E),对特殊字符需要转义"\"

         

你可能感兴趣的:(linux,unix,Pattern,grep,bash)