正则表达式

作者: 子午禾苇 | 来源:发表于2019-05-08 12:00 被阅读0次

    几个正则表达式编辑器:
    Regexper:http://www.regexper.com/

    Debuggex :https://www.debuggex.com/

    PyRegex:http://www.pyregex.com/

    1.匹配任意一个字符.

    • .是元字符
    • b.u可以找出bau bru biu b.u b1u等等等,但是不会找出bu biiu
    • .不能用于匹配换行符
      ⚠️:反斜杠\可以忽略元字符,使得元字符的功能与普通字符一样
      故,b\.u将找出b.u,b\\u将找出b\u

    2.匹配阿拉伯数字、英文大小写和下划线\w\W

    \w匹配阿拉伯数字、英文大小写和下划线
    \W匹配被\w排除在外的字符(\w的补集)

    3.匹配阿拉伯数字\d

    • 匹配数字: \d
    • 匹配小数:\d\.\d
    • 既匹配数字又匹配小数:➡️
      \D:匹配阿拉伯数字\d的补集(包含空格等)

    4.匹配空白字符\s

    \s:匹配空格、制表符、换行等
    \S:匹配被\s排除在外的字符(\s的补集)

    5.字符集合[a-zA-Z0-9]

    [选择范围]:匹配方括号中的任意一个字符
    [\u4e00-\u9fa5]:中的所有中文字符

    6.重复一次或多次+

    [范围]+:重复一次或多次
    [yY][oO]+

    yo
    yooo
    Yo
    YOOOO
    

    ?[]里的一个字符重复一次或多次??

    7.重复0次或多次*

    [yY][oO]+[!~\.]*

    yo
    yooo
    Yo
    YOOOO
    yo!
    yo.
    yoooo~~
    

    8.重复0次或1次?

    [范围]?:重复0次或1次
    [yY][oO]+p?[!~\.]*

    yop!!
    Yoop
    yooop
    yo
    yooo
    Yo
    YOOOO
    yo!
    yo.
    yoooo~~
    

    9.指定重复范围(重复a到b次)

    {a,b}:重复a到b次

    10.分组匹配

    (.+)飞飞,(.+)追追
    $1
    $2

    11.分组匹配但不捕获(?:模式)

    https://biaoyansu.com/28.11

    12.正向预查

    正向肯定预查:(?=模式)
    \d+(?=模式):前面是我要匹配的东西,后面必须跟模式,但是不要匹配模式中的内容
    正向否定预查:(?!模式)
    (?!模式)|\前面匹配的内容

    13.反向预查

    加了个箭头<
    (?<=xxx) 反向肯定预查,与正向肯定预查类拟,只是方向相反
    (?<!xxx) 反向否定预查,与正向否定预查类拟,只是方向相反

    14.速查表

    边界

    符号 描述 例子 能匹配 不能匹配
    ^ 行首或字符串开始 ^yo yo ayo
    $ 行末或字符串结束 yo$ yo yop
    \b 单词边界 \byo\b mu yo mu muyomu
    \B 非单词边界 \Byo\B muyomu mu yo mu

    预查

    符号 描述 例子 能匹配 不能匹配
    (?=xxx) 正向肯定预查,从任何匹配xxx的字符串开始处匹配查找字符串 yo(?=o) yoo yo
    (?!xxx) 正向否定预查,从任何不匹配pattern的字符串开始处匹配查找字符串 yo(?!o) yo yoo
    (?<=xxx) 反向肯定预查,与正向肯定预查类拟,只是方向相反 (?<=y)o yo yoo
    (?<!xxx) 反向否定预查,与正向否定预查类拟,只是方向相反 (?<!goo)d mood good

    通配

    符号 描述 例子 能匹配 不能匹配
    [ ] 字符集合 [ace] a, c, e d
    [ - ] 字符范围 [a-c] a, b, c d
    [^ ] 不包含的字符集合 [^abc] d, e a, b, c
    . 匹配除断行外的任何字符 yo. yoo, yop, yoh yo
    \s 空白字符,等于[\n\r\f\t ] la\sla la la lala
    \S 非空白字符,等于[^\n\r\f\t] la\Sla la+la la la
    \d 数字 \d{2} 23 1a
    \D 非数字 \D{3} yoo, abc yo1
    \w 单词,等于[a-z-A-Z0-9_] \w{4} v123 v12.3
    \W 非单词,等于[^a-z-A-Z0-9_] .$%? .$%? .ab?

    特殊字符

    特殊字符 描述
    \n 断行
    \r 回车符
    \t 制表符
    \v 垂直制表符
    \f 换页
    [\b] 退格

    其他

    符号 描述 例子 能匹配 不能匹配
    | 或,其一 a|b a, b c
    (xxx) 匹配xxx并获取这一匹配 yo(o|p) yoo 或 yop yoh
    (?:xxx) 匹配xxx但不获取这一匹配 y(?:o) yo ya
    + 重复1次或多次 yo+ yo, yooo y
    * 重复0次或多次 yo* y, yoo yop
    ? 出现0次或1次 yo? y, yo ye
    ?? ?的懒惰模式,尽可能少匹配 yoo?? yo yoo
    +? +的懒惰模式 yo+? yo yoo
    *? *的懒惰模式 yo*? y yo
    {n} 重复n次 yo{2} yoo yooo
    {n,m} 重复n到m次 yo{1, 3} yo,yooo yoooo
    {n,} 重复至少n次 yo{2,} yoo, yooo yo

    相关文章

      网友评论

        本文标题:正则表达式

        本文链接:https://www.haomeiwen.com/subject/wbesnqtx.html