正则表达式

一、元字符

  1、.表示匹配任意单个字符;

  2、[]表示字符种类,如0-9,a-z,A-Z,表示范围;

  3、[^]里面的^表示匹配的是除[]内的其他字符;

  4、*表示匹配>=0个字符,如/abc*/表示匹配ab后面跟任意个c;

  5、+表示匹配>=1个字符,如/abc+/表示匹配ab后面跟至少1个c;

  6、?表示匹配的这个字符可有可无,如/abc?/表示匹配的是ab或abc;

  7、{n, m}表示匹配的字符数num为n<=num<=m,

    如/abc{2, 3}/表示匹配ab后跟2~3个c,/abc{2,}表示匹配ab后跟至少2个c。

  8、(xyz)表示字符集,只匹配xyz这个字符串;

  9、|表示或,如(a|b)表示匹配的是a或b;

  10、^$分别表示匹配字符串的开头和结尾,如/^<[div|span]>$/表示匹配的是<div>或<span>;

  11、\转义字符,用来匹配一些保留字符[](){}.*+?^$\/。

二、锚点

  用来指定开头和结尾,使用^和$来实现。

三、简写字符集

  

四、零宽度断言(以下为我自己的理解,正表存在,负表排除)

  1、(?=...),正先行断言,判断匹配表达式后面是否存在...,匹配到的表达式后面需要存在...;

  2、(?!...),负先行断言,判断匹配表达式后面是否存在...,匹配到的表达式后面排除...,也就是不存在...才符合;

  3、(?<=...),正后发断言,判断匹配表达式前面是否存在...,匹配到的表达式前面需要存在...;

  4、(?<!...),负先行断言,判断匹配表达式前面是否存在...,匹配到的表达式前面排除...,也就是不存在...才符合。

五、标志

  1、i表示忽略大小写;

  2、g表示全局搜索;

  3、m为多行修饰符,表达式内^$工作范围在每行的起始。

六、贪婪/惰性匹配

  正则表达式默认会启用贪婪匹配,尽可能多的匹配长的字符,如果不想要贪婪匹配则需要加上?开启惰性匹配,其区别如下所示。

  被匹配字符串:abcabc

  贪婪匹配写法:/(.*bc)/ ——匹配到字符串:abcabc

  惰性匹配写法:/(.*?bc)/ ——匹配到的字符串:abc

 

(内容来源于正则表达式github地址:learn-regex/README-cn.md at master · ziishaned/learn-regex · GitHub

posted @ 2021-07-29 16:21  桃李子  阅读(55)  评论(0编辑  收藏  举报