linux基础学习 -- 正则表达式(一)

版权声明:一起学习,一起进步,一起coding https://blog.csdn.net/sunshine2285/article/details/86747316

与正则表达式相关的概念

正则表达式Regular Exception应用范围

  • 字符串匹配操作和替换操作
  • 举例:linux中的vi more grep yacc lex awk sed 等命令使用
  • 其他: Visual studio,word等文本编辑器

正则表达式的功能

  • 描述一个字符串的模式

注意:

  • 正则表达式规则和文件通配符规则不同,正则表达式用于文本处理,文件名匹配规则用于文件处理
  • 不同软件对正则表达式的理解有差异

元字符

  • 六个元字符: . * [ \ ^ $
  • 其它字符与自身匹配
  • 转义:用反斜线可以取消特殊含义字符的特殊意义,如:正则表达式 hello\. 只与字符串 hello. 匹配

单字符正则表达式

  • 长的正则表达式由单字符正则表达式构成
  • 非特殊字符与其自身匹配
  • 转义字符(\) 转义字符之后只能加六个元字符,表示元字符本身符号没有特殊含义,不可以有其它的字符
  • 定义集合:在一对方括号之间的字符为集合的内容,如[abcd] 表示与 a,b,c,d 匹配
                      圆点,星号,反斜线在方括号内时,表示它们自己。
  • 用减号 - 定义一个区间:减号在中间否则表示自身,如[a-d],[A-Z],[a-zA-Z0-9]
  • 用 ^ 表示补集:^号在开头否则表示自身,如:[^a-z]匹配任意非小写字母

单字符正则表达式的组合

  • 串结:abc,[A-Z].[0-9] 用点来串结
  • 星号(*)单字符正则表达式 后跟*,匹配此单字符正则表达式0次或任意多次出现,例如56*7,与5667,57匹配,与5687不匹配
  • 锚点:$在尾部时有特殊含义,否则与自身匹配,如:123$ 匹配文件中行尾的123,不在行尾的123字符不匹配
               ^在首部时有特殊含义,否则与自身匹配,如:^123 匹配文件中行首的123,不在行首的123字符不匹配

正则表达式的扩展:(扩展自行学习)[与基本正则表达式不兼容]

  • ERE:扩展的正则表达式
  • PCRE:Perl-compatible regular expression 与perl语言兼容的正则表达式

对基本正则表达式(BRE)进行改进:

  • 表示分组:圆括号() (xy)* 可匹配空字符串,xy,xyxy,xyxyxy
  • 表示逻辑运算:(a|b) 与a或者b匹配
  • 重复次数定义:与星号地位类似的+和?,限定重复次数\{m,n\}

       -- *号表示它左边的单字符正则表达式的0次或多次重复

       -- +号表示1次或多次出现

       -- ?表示0次或一次出现

       -- 限定重复次数例如:[1-9][0-9]\{6,8\} 表示7-9位数字首位非0

  • 命名预定义集合

       --  [[:xdigit:]]  十六进制数字

       --  \d  数字

       --  \D  非数字

  • 比^和$更加灵活的锚点

猜你喜欢

转载自blog.csdn.net/sunshine2285/article/details/86747316