zoukankan      html  css  js  c++  java
  • 正则表达式之我见—限定符

    限定符指定在输入中必须存在字符、组或字符类的多少个实例才能找到匹配项。下表列出了支持的限定符。

    贪婪限定符惰性限定符说明
    * *? 匹配零次或多次。
    + +? 匹配一次或多次。
    ? ?? 匹配零次或一次。
    {n} {n}? 准确分配n次。
    {n,} {n,}? 至少匹配 n次。
    {n,m} {n,m}? 从n与m次。

    数量 n 和 m 是整数常数。

    这里的原则是:一般的字符后面追加限定符是(尽可能多)的匹配匹配项,限定符后面追加问号的是(尽可能少)的匹配匹配项。

    tips:尽可能多=贪婪,尽可能少=惰性。

    下面来一一验证吧!

    1.1 *尽可能多的匹配0次或n次 和 *?尽可能少的匹配0次或n次

     

    *限定符前面的o出现0次或n次,所以同时匹配zo和zoo。

    *?惰性限定符则匹配满足条件的最短结果。需要注意的是*表示0次或多次,所以在这里o为0也就是结果为zo是最短的。

    1.2 +尽可能多的匹配1次或n次 和 +?尽可能少的匹配1次或n次

     +限定符是一次或多次,所以此处不满足zoo条件的zo,他不能忍,只显示了zoo。

    +?惰性限定符满足条件的就是最短的,超出部分竟然直接无视了...

    1.3 ?尽可能多的匹配0次或1次 和 ??尽可能少的匹配0次或1次

     

    ?限定符前面的o出现0次或1次,对应的结果zo和zoo。

    ??限定符在0和1之间,选择最短的结果:即为0的情况zo。

    1.4 {n}尽可能多的匹配n次 和 {n}?尽可能少的匹配n次

     

    {n}限定符无论尽可能多还是尽可能少,6个a不管你怎么样排列,结果都一样。

    1.5 {n,}尽可能多的匹配n次以上 和 {n,}?尽可能少的匹配n次以上

     

    {n,}限定符就是n个以上,此处是3个以上,结果6个a全收了...真狠!

    {n,}?限定符是最少n个,此处是3也就是3个,6个a当然是3个一组排2组了,如果n=2,就是2个一组,排3组。

    1.6 {n,m}尽可能多的匹配n次到m次 和 {n,m}?尽可能少的匹配n次到m次(必须:n<m)

    {n,m}限定符原则是以m的值为优先显示,这里是1-3个a,6个a被瓜分成2组3个的。如果是2-4会怎样?

    看到了嘛?2个起。只要够2个,他就要了你的..

    {n,m}?限定符原则是以n的值为优先显示,此处n=2,6个a按2个一组分,结果显示3组。那如果n=1呢?

    看到没,m直接被无视了,一个都不放过6个a都在这里。说明在{n,m}?惰性限定符等于{n,}?

  • 相关阅读:
    高德地图API1.4.15较1.4.12的marker属性取值发生变化
    Cesium加载地图提示RangeError:Invalid of array List
    layui分页功能使用——点页码再查询
    设置layui的自定义样式
    页面引入layui.js后提示layui未定义
    SQL语句出现sql关键字
    vs2017 vs2019配置sqlite3连接引擎(驱动)指南(二)vs2019续集
    vs2017 vs2019配置sqlite3连接引擎(驱动)指南(一)vs2019篇
    Qt C++ QDataStream和QBuffer
    Qt C++不规则窗口
  • 原文地址:https://www.cnblogs.com/crafts/p/4201379.html
Copyright © 2011-2022 走看看