查找与替换

BRE (基本)正则:

  .     匹配任何单个字符

      +    匹配前面一个或者多个

      ?   匹配前面零个或者一个

      *     匹配前面任何(或者没有的)单个字符

             ab*c 表达匹配ac, abc, abbc, abbbbc

     ^     匹配行或者字符串开始处  //  ^abc : abc出现在一行的开头

     $    匹配字符串完结处   // abc$   : abc 出现一行的结尾

    [Ti]  匹配方括号内的任意字符; 在一行的任意位置,含有T 或者i.

     [^Ti] 指匹配不在方括号内的任意字符, 不匹配T 和 i.

    ()  匹配方括号括起来的正则

   tol.toy  匹配tol这三个字符,加上任意一个字符,再加上toy这三个字符

    tol.*toy 含有tol的三个字符, 加上任何0个或者多个字符,再加上toy

   \{n,m\}  匹配前面单个字符重复出现的次数

    \{n\}  重现n次

    \{n,\}  至少重复出现n次

              \{n,m\} 重现n至m次

  向后引用:

              \( \)      \(ab\).*\1  匹配ab组合二次重现,中间可以存在任何数目的字符。

             \(["" ']\).*\1  匹配单引号或者双引号括起来的子, 比如'foo' 或者"bar"

 

example:
abcABCdefDEF

  ABC -> match

   ^ABC -> not match since ABC is not at the beginning

      def$ -> not match since it is not at the end

^$ 匹配空的字符串或者行列

^ and $ 只有在开始或者结尾处有这层含义, ab^cd就没有特殊的含义

cc -E foo.c | grep -v '^$'  > foo.out

C编译出的拓展文件可能含有很多空行, 用此方法删除空行

 

posted @ 2020-05-13 14:51  John_K  阅读(201)  评论(0)    收藏  举报