• Linux 正则表达式


     

     一、什么是正则表达式?

    正则表达式又称正规表示式、正规表示法、正规表达式、规则表达式、常规表示法(英语:Regular Expression,在代码中常简写为 regex、regexp 或 RE),计算机科学的一个概念。正则表达式使用单个字符串来描述、匹配一系列符合某个句法规则的字符串。在很多文本编辑器里,正则表达式通常被用来检索、 替换那些符合某个模式的文本。

    许多程序设计语言都支持利用正则表达式进行字符串操作。例如,在 Perl 中就内建了一个功能强大的正则表达式引擎。正则表达式这个概念最初是由 UNIX 中的工具软件(例如sedgrep)普及开的。正则表达式通常缩写成“regex”,单数有 regexp、regex,复数有 regexps、regexes、regexen。

      1. 正则表达式的组成

                  正则表达式是由一串字符和元字符构成的字符串

        (1).一般字符:没有特殊意义的字符

        (2).特殊字符(meta字符):元字符,有在正则表达式中有特殊意义

       元字符是用来阐释字符表达式意义的字符,即,元字符就是描述字符的字符,它用于对字符表达式的内容、转换及各种操作信息进行描述。


     二、正则表达式的分类

        (1)基本正则表达式

        a. 字符匹配

         字符      意义
      *  匹配其前面的字符任意次(0次、1次或多次)
      .  匹配任意单个字符
      ^  匹配行首
      $  匹配行尾
      [xyz]  匹配指定范围内的任意单个字符,字符集合(character class)。匹配所包含的任意一个字符。例如,“[abc]”可以匹配“plain”中的“a”。其中特殊字符仅有反斜线保持特殊含义,用于 转义字符。其它特殊字符如星号、加号、各种括号等均作为普通字符。脱字符^如果出现在首位则表示负值字符集合;如果出现在字符串中间就仅作为普通字符。连字符 - 如果出现在字符串中间表示字符范围描述。例如,[0-9]、[a-z]、[A-Z]、[a-zA-Z0-9];如果如果出现在首位则仅作为普通字符。
      [^]  匹配指定范围外的任意单个字符
      .*  匹配任意长度的任意字符
        转义符,屏蔽一个元字符的特殊意义
      ?  匹配起前面字符0次或1次
      +  匹配其前面字符1次或多次
      <  匹配字符串的开始位置
      >   匹配的字符串结束位置
      <word>   精确匹配符号  精确匹配到某个word,而不是出现在word中的部分
      {m}  匹配其前面的字符m次
      {m,}  匹配其前面字符最少m次
      {,n}  匹配其前面字符最多n次
      {m,n}  匹配其前面字符最少m次,最多n次

        b. 特殊符号表示

       特殊符号      意义
      [:alnum:]  代表英文大小写字节及数字,亦即 0-9, A-Z, a-z
      [:alpha:]  代表任何英文大小写字节,亦即 A-Z, a-z
      [:blank:]  代表空白键与 [Tab] 按键两者
      [:cntrl:]  代表键盘上面的控制按键,亦即包括 CR, LF, Tab, Del.. 等等
      [:digit:]  代表数字而已,亦即 0-9
      [:graph:]  除了空白字节 (空白键与 [Tab] 按键) 外的其他所有按键
      [:lower:]  代表小写字节,亦即 a-z
      [:print:]  代表任何可以被列印出来的字节
      [:punct:]  代表标点符号 (punctuation symbol),亦即:" ' ? ! ; : # $...
      [:upper:]  代表大写字符,亦即 A-Z
      [:space:]  任何会产生空白的字节,包括空白键, [Tab], CR 等等
      [:xdigit:]  代表 16 进位的数字类型,因此包括: 0-9, A-F, a-f 的数字与字符

     

        (2)扩展正则表达式

        a. 字符匹配

       字符      意义
      ?  匹配前面的子表达式零次或一次。例如,“do(es)?”可以匹配“do”或“does”中的“do”。?等价于{0,1}。
      +  匹配前面的子表达式一次或多次。例如,“zo+”能匹配“zo”以及“zoo”,但不能匹配“z”。+等价于{1,}。
      (pattern)  匹配pattern并获取这一匹配的子字符串。该子字符串用于向后引用。要匹配圆括号字符,请使用“(”或“)”。
      x|y  匹配x或y。例如,“z|food”能匹配“z”或“food”。“(z|f)ood”则匹配“zood”或“food”。 常与()配合使用,如(x|y)
      {n}  n是一个非负整数。匹配确定的n次。例如,“o{2}”不能匹配“Bob”中的“o”,但是能匹配“food”中的两个o。
      {n,}  n是一个非负整数。至少匹配n次。例如,“o{2,}”不能匹配“Bob”中的“o”,但能匹配“foooood”中的所有o。“o{1,}”等价于“o+”。“o{0,}”则等价于“o*”。
      {n,m}  m和n均为非负整数,其中n<=m。最少匹配n次且最多匹配m次。例如,“o{1,3}”将匹配“fooooood”中的前三个o。“o{0,1}”等价于“o?”。请注意在逗号和两个数之间不能有空格。

     

     区别于通配符

                   

  • 相关阅读:
    附近有什么?8款可以查周边的App
    实体店里充话费要怎么弄
    怎样买手机号?
    手机号是SIM卡的号呢,还是买手机时就带的
    网站SSL证书在线检测
    未来什么行业最赚钱
    陈安之-如何选择最赚钱的行业
    斗鱼宣布获C轮15亿融资 直播行业进入资本时代
    2016年Godaddy最新域名转出教程
    GoDaddy账户间域名转移PUSH以及ACCEPT接受域名过户方法
  • 原文地址:https://www.cnblogs.com/xiaojiaoya/p/10260503.html
Copyright © 2020-2023  润新知