正则表达式《精通正则表达式》笔记

前端之家收集整理的这篇文章主要介绍了正则表达式《精通正则表达式》笔记前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

概念

  1. 正则(regex):
    • 元字符+普通字符@H_403_6@
    @H_403_6@
  2. 字符组(Character Class):
    • [abc.?].?等需要转义的字符可以以字符组方式匹配@H_403_6@
    • 字符组都是匹配一个字符

      g[.?]并不会匹配 g.?

      @H_403_6@
    @H_403_6@
  3. 字符组元字符(Character-class Metacharacter):
    • [^0-5a-z]匹配大小写[Ss]qr@H_403_6@
    • 匹配HTML TAG<H[1-5]>@H_403_6@
    • ^不包含@H_403_6@
    • [a|b]和(a|b)不同,前者|只是一个字符,后者则是”或”@H_403_6@
    @H_403_6@
  4. 单词分界(Word Boundaries)元字符序列(Metasequences):
    • <\word word\>@H_403_6@
    • 匹配单词word开头的和word结尾的@H_403_6@
    • \b单词分界 \bcat\b@H_403_6@
    @H_403_6@
  5. 括号及反向引用(Parentheses and Backreferences):
    • (abc)\1 \1开始引用 多个括号从左至右
      • PHP 使用引用需要转义,即preg_match('/(cat)\\1/',$str,$res)@H_403_6@
      @H_403_6@
    @H_403_6@
  6. 环视(lookaround):
    环视和\b ^ $等一样只是匹配特定的位置。
    1. 肯定顺序环视(lookahead):
      • (?=h2ero)love you从左至右@H_403_6@
      @H_403_6@
    2. 肯定逆序环视:
      • (?<=h2ero)lover you从右至左

        分隔123456789为123.456.789,可以是preg_replace('/(?<=\d)(?=(\d\d\d)+$)/','.','123456789');也可以是preg_replace('/(?=\d)(?<=(\d\d\d)+$)/','123456789');两个环视的先后顺序不重要。只要在相同位置匹配即可。

        @H_403_6@
      @H_403_6@
    3. 否定顺序环视:
      • (?!h2ero)love you从左至右@H_403_6@
      @H_403_6@
    4. 否定逆序环视:
      • (?<!h2ero)lover you从右至左@H_403_6@
      @H_403_6@
    @H_403_6@

拾遗

  1. ^cat$以字符阅读 第一个c开头 第二个a 第三个t结尾 而不是单词cat@H_403_6@
  2. ^$匹配空行@H_403_6@
  3. "[^"]*"匹配[]内的字符串@H_403_6@

PHP中的正则

  1. 单引号转移\表示一个\所以\\才表示一个\@H_403_6@
  2. 模式修饰符
    • i 忽略大小写@H_403_6@
    • m 增强的行锚模式@H_403_6@
    • s 点号通配模式@H_403_6@
    • x 宽松排列和注释模式@H_403_6@
    • u 以UTF-8读取正则表达式和目标字符@H_403_6@
    • X 启用PCRE额外功能@H_403_6@
    • e 将replacement作为PHP代码

      $metric=preg_replace(‘/(-?\d+(?:.\d+)?)/e’,’floor(($1-32)*5/9+0.5)’,$subject);

      @H_403_6@
    • S 启用PCRE的study优化尝试@H_403_6@
    • U 交换?的匹配优先含义@H_403_6@
    • A 将整个匹配尝试锚定在起始位置@H_403_6@
    • D $只能匹配锚定在起始位置@H_403_6@
    @H_403_6@
  3. preg_match中的RPEG_OFFSET_CAPTURE由于获取每次匹配的偏移量。preg_match_all中的PREG_SET_ORDER每次匹配集中保存。如果要设置多个参数用|连接。@H_403_6@

猜你在找的正则表达式相关文章