shell--正则表达式

正则表达式:
  从根本上看,正则表达式由两个基本部分组成:一般字符和特殊字符。
  一般字符指的是任何没有特殊意义的字符。
  特殊字符常被称为元字符(metacharacter),下面以meta字符表示。
  传统上,POSIX定义了两种正则表达式语法,即:基本正则表达式(BRE)和扩展正则表达式(ERE)。
  POSIX BRE及ERE的meta字符
  字符    BRE/ERE   模式含义
  \         皆可    通常用以关闭后续字符的特殊意义
  .         皆可    匹配任何单个字符,NUL除外
  *         皆可    匹配在它之前的任何数目(或没有)的单个字符
  ^         皆可    在行或字符串的起始处匹配紧接着的正则表达式
  $         皆可    在字符串或行尾处匹配前面的正则表达式
  [...]     皆可    方括号表达式,匹配方括号内的任一字符。连字符(-)指的是连续字符的范围
                    ^符号置于方括号里第一个字符则有相反含义:即匹配不在列表内(方括号内)的任何字符
  \{n,m\}   BRE     区间表达式,匹配在它前面的单个字符重现的次数区间
  {n,m}     ERE     区间表达式,匹配在它前面的单个字符重现的次数区间
  \( \)     BRE     将\(与\)间的模式作为独立的子表达式,后面可以通过转义序列来引用(例如\1)
                    例如: \(ab\).*\1,指的是匹配与ab组合的两次出现,中间可存在任何数目的字符
  \n        BRE     重复在\(与\)内的第n个子模式,n为1-9的数字,1为由左开始
  +         ERE     匹配前面正则表达式的一个或多个实例
  ?         ERE     匹配前面正则表达式的0或1个实例
  |         ERE     匹配|前面或后面的正则表达式
  ()        ERE     匹配()括起来的正则表达式群
  
  示例:
  表达式          匹配
  tolstoy         位于一行上任何位置的7个字母: tolstoy
  ^tolstoy        位于一行开头的tolstoy
  tolstoy$        位于一行结束的tolstoy
  ^tolstoy$       一行恰好为tolstoy
  [^aeiouy]       小写a、e、i、o、u、y之外的任何字符
  
  BRE运算符优先级(从高到低):
  [..] [==] [::]      用于字符排序的方括号符号
  \metacharacter      转义的meta字符
  []                  方括号表达式
  \( \) \digit        子表达式或后向引用
  * \{ \}             前置单个字符重现的正则表达式
  无符号              连续
  ^ $                 锚点


  ERE运算符优先级(从高到低):
  [..] [==] [::]      用于字符排序的方括号符号
  \metacharacter      转义的meta字符
  []                  方括号表达式
  ()                  分组
  * + ? {}            重复前置的正则表达式
  无符号              连续
  ^ $                 锚点  
  |                   交替

你可能感兴趣的:(shell,正则表达式,BRE,ERE)