首页 > 代码库 > 正则表达式

正则表达式

grep文本过滤(模式:pattern)工具

  • grep egrep fgrep(不支持正则表达式搜索)

    • 贪婪模式:尽可能长的匹配

    • grep: Global search REgular expression and Print out the line

    • 作用: 文本检索工具,根据用户指定的“模式”对目标文本逐行进行匹配检查;打印匹配到的行;

    • 模式: 由正则表达式字符及文本字符所编写的过滤条件;

    • RECEXP: 由一类特殊字符及文本字符所编写的模式;其中有些字符不表示字符字面意义,而表示控制或通配的功能;

        分两类
           基本正则表达式:BRE
           扩展正则表达式: ERE
                        grep-E, egrep
    • 正则表达式引擎:


    • 选项

        --color=auto: 对匹配到的文本着色显示
        -v: 显示不能被pattern匹配到的行
        -o: 仅显示匹配到的字符串
        -i: 匹配时忽略字符大小写
        -q: 静默模式,不输出任何信息
        -A #:after,后#行
        -B #:before,前#行
        -C #:context,前后各#行
        -w:匹配整个单词
      
        -E: 使用ERE
  1. grep [OPTIONS] PATTERN [FILE...]

基本正则表达式元字符
  • 字符匹配:

      .: 匹配任意单个字符
      []: 匹配指定范围内的任意单个字符
      [^]:匹配指定范围外的任意单个字符
      [:alnum:] 字母和数字
      [:alpha:] 代表任何英文大小写字符,亦即 A-Z, a-z
      [:lower:] 小写字母 [:upper:] 大写字母
      [:blank:] 空白字符(空格和制表符)
      [:space:] 水平和垂直的空白字符(比[:blank:]包含的范围广)
      [:cntrl:] 不可打印的控制字符(退格、删除、警铃...)
      [:digit:] 十进制数字 
      [:xdigit:]十六进制数字
      [:graph:] 可打印的非空白字符
      [:print:] 可打印字符
      [:punct:] 标点符号
  • 匹配次数:用在要指定次数的字符后面,用于指定前面的字符要出现的次数;

      * :   匹配前面的字符任意次
      .*:    任意长度的任意字符
      \?:    匹配前面的字符一次或零次;即前面的可有可无
      \+:    匹配前面的字符至少一次
      \{m\}: 匹配前面的字符m次
      \{m,n\}:匹配前面的字符至少m次,至多n次;
      \{0,n\}: 匹配前面的字符至多n次
      \{m,\}:  匹配前面的字符至少m次
  • 位置锚定:

      ^: 行首锚定:用于模式的最左侧
      $:行尾锚定; 用于模式的最右侧;
      ^PATTERN$ :用于匹配模式的整行;
      ^$: 空行;
      ^[[:space:]]*$
      \< 或 \b;词首锚定;用于单词模式的左侧;
      \> 或 \b:词尾锚定;用于单词模式的右侧;
      \<PATTERN\>: 匹配整个单词;
  • 分组:

      \(\): 将一个或多个字符捆绑在一起,当作一个整体进行处理;
      \(xy\)*ab
    * Note:分组括号中的模式匹配到的内容会被正则表达式记录于内部的变量中,这些变量的命名方式为: \1, \2, \3,...
      \1: 从左侧起,第一个左括号以及与之匹配右括号之间的模式所匹配到的字符;
    
      \(ab\+\(xy\)*\):
           \1: ab\+\(xy\)*
           \2;xy
  • 后向引用:引用前面的分组括号中的模式所匹配字符,(而非模式本身)


正则表达式