正则表达式

正则表达式:

  字符组:

    [0-9]  数字:0123456789

    [a-z]  英文:a到z(小写)

    [A-Z]  英文:A到Z(大写)

    [a-zA-Z]  括号里可以写多个

  元字符:

    .    匹配除换行符以外的任意字符

    w  匹配字母或数字或下划线

    s   匹配任意的空白符

    d   匹配数字

           匹配一个换行符

         匹配一个制表符

       匹配以(一个单词)的结尾(g,以g结尾的)

    ^    匹配字符串的开始

    $    匹配字符串的结尾

    W    匹配非字母或数字或下划线

    D   匹配非数字

    S   匹配非空白符

    a|b  匹配字符a或字符b,优先匹配|左边的

    ()     匹配括号内的表达式,也表示一个组

    [...]  匹配字符组中的字符

    [^...]   匹配除了字符组中字符的所有字符

  量词:

    *       重复零次或更多次

    +       重复一次或更多次

    ?      重复零次或一次

    {n}      重复n次

    {n,}     重复n次或更多次

    {n,m}  重复n次到m次,默认贪婪多次

  .^$:

    我.   匹配所有“我.”的字符

    ^我.  只从开关匹配“我.”

    我.$  只匹配结尾的"我.$"

  *+?{}:

    我.?     只匹配我后面零个或一个任意字符

    我.*    匹配我后面零个或多个任意字符,匹配我所有所有东西直到结束

    我.+    匹配我后面任意1个或多个字符,匹配到结束 

    我.{1,2}  匹配我后面任意一到两个字符,有两个必须匹配两个。

    我.*?  惰性匹配,只匹配我,我后面都不要

  字符集 [] [^]:

    我[爱你]  匹配“我”字后面“爱你”的字符任意次数

    我[^你]*  匹配“我”字后面任意次数不是“你”的字符

    [d]    匹配任意一个数字

      [d]+     匹配任意多个数字

  分组()与或| [^]:

    ^[1-9]d{13,16}[0-9x]$      匹配[1-9]d{13,16} 13到16次,[0-9x]  0-9或x结尾

    ^[1-9]d{14}(d{2}[0-9x])?$     匹配[1-9]d{14},d{2}[0-9] 分成一组,约束他们出现1次或零次

    ^([1-9]d{16}[0-9x]|[1-9]d{14})$  匹配 [1-9]d{16}[0-9x]如果没有匹配上就匹配[1-9]d{14}

  转义符 :

    d  只能匹配数字,不能匹配d

    \d  匹配d ,代表转义

    “\\d”  匹配\d

    r“\d”  r‘d',让整个字符串不转义(有引号)

  贪婪匹配:

    <.*>   默认为贪婪匹配,会尽量多的找。

    <.*?>  加上? 贪婪匹配转为惰性匹配,会尽量取短的。

  惰性匹配:

    *?  重复任意次,但尽可能少重复

    +?  重复1次或更多次,但尽可能少重复

    {n,m} 重复n到m次,但尽可能少重复

    {n,}  重复n次以上,但尽可能少重复

  .*?x : 取前面任意长度的字符,直到一个x出现

原文地址:https://www.cnblogs.com/tsboy/p/8252272.html