为了更好的理解“匹配优先”和“忽略优先”我们可以这样定义:
“匹配优先”可以理解为“贪婪匹配”或“非懒惰匹配”;
“忽略优先”可以理解为“非贪婪匹配”或“懒惰匹配”;
强调一点:表达式cat不是匹配以cat开头的字串。而是匹配一个c,再匹配一个a,最后匹配一个t。Jeffrey E.F.Friedl这样告诉我们。
一、匹配优先
字 串: <B>Billions</B> and <B>Zillions</B> of
表达式: <B>.*</B>
结 果: <B>Billions</B> and <B>Zillions</B>
描 述:
匹配优先时.*只从自身出发,匹配尽可能多的内容,只有在全局匹配需要的情况下才会“被迫”交还一些字符。
在最开始的<B>匹配之后,.*能够匹配任何字符,所以它会一直匹配到字符串的末尾。
为了让最后的</B>能够匹配,.*会不断交还字符(或者,更确切的说,是正则引擎强迫它回退),顺序:‘>’、‘B’、‘/’、‘<’直到满足‘<’匹配为止。
二、忽略优先
字 串: <B>Billions</B> and <B>Zillions</B> of
表达式: <B>.*?</B>
结 果: <B>Billions</B>
<B>Zillions</B>
描 述:
开始的<B>匹配之后,.*?首先决定不需要匹配任何字符,因为它是忽略优先的。
于是,控制权交给后面的‘<’符号:
此时‘<’无法匹配‘B’,所以控制权交还给.*?则成功匹配‘B’。
此时.*?又必须选择,是继续尝试匹配,还是忽略?因为它是忽略优先的,会首先选择忽略。
接下来‘<’仍然无法匹配‘i’,所以控制权又再一次的交由.*?成功匹配后再交由‘<’,……这样继续直到‘<’匹配成功。
此时位置为<B>后第一次出现</B>的位置。
这样就出现了两个成功匹配结果<B>Billions</B>和<B>Zillions</B>
分享到:
相关推荐
匹配优先和忽略优先都期望获得匹配... 167 匹配优先、忽略优先和回溯的要旨... 168 占有优先量词和固化分组... 169 占有优先量词,?+、*+、++和{m,n}+. 172 环视的回溯... 173 多选结构也是匹配优先的吗... ...
因为使用了^和$,所以输入的整个字符串都要用来和\d{5,12}来匹配,也就是说整个输入必须是5到12个数字,因此如果输入的QQ号能匹配这个正则表达式的话,那就符合要求了。 和忽略大小写的选项类似,有些正则表达式处理...
”,即变成属于非贪婪模式的量词,也叫做忽略优先量词,包括: “{m,n}?”、“{m,}?”、“??”、“*?”和“+?”。 从正则语法的角度来讲,被匹配优先量词修饰的子表达式使用的就是贪婪模式,如“(Expression)+
为此,提出一种基于地图匹配的时空轨迹匿名算法,利用真实路网数据构造假轨迹的候选匹配集,通过设置时间和空间匿名函数,利用启发式广度优先搜索算法搜索目标匹配轨迹点,满足时空匿名性和空间相关性的隐私安全条件...
1、批量对比Excel,结果以Excel展示,以不同颜色标记差异 2、支持多进程对比,高效比对文件 3、python+pyqt5编写 4、支持CMD启动 ...3、规则匹配规则优化:优先使用匹配到的最长表名规则 4、修复其他已知bug
3、规则匹配规则优化:优先使用匹配到的最长表名规则 4、修复其他已知bug 20230310更新内容: 修复影响对比的bug 1、修改bug:对比双方只有一个sheet存在数据时,对比有报错 2、兼容部分CSV使用gbk打开会编码报错...
3、规则匹配规则优化:优先使用匹配到的最长表名规则 4、修复其他已知bug 20230310更新内容: 修复影响对比的bug 1、修改bug:对比双方只有一个sheet存在数据时,对比有报错 2、兼容部分CSV使用gbk打开会编码报错...
图形中的高级算法项目,如最大加权二分匹配、最短路径算法(如 Bellman-Ford 算法、Djikstra 算法、DAG、最小生成树算法(如 Kruskal、Prims、哈希、优先队列)、电子商务网站(如亚马逊)、非常大的算术运算数字...
上文中,我们聊到了一点关于PHP中(NFA PCRE)正则表达式匹配优先量词,忽略优先量词的匹配原理了。那么上文留下的问题,您的答案是什么呢?
利用历史QoS匹配记录,运用朴素贝叶斯定理根据用户提交的价格参数来分配与其级别相对应的符合要价范围资源,并优先考虑QoS水平较高的任务,将当前时刻QoS水平较高的资源预留给下一时刻到达的QoS水平较高的任务,而...
协同标签系统中现有的用户建模方法将用户视为标签向量,并假设向量中的标签均是用户感兴趣的,且只能分别计算单个标签之间的匹配程度,忽略了多个标签作为一个整体对用户兴趣产生的影响.为此,文中提出了一种基于标签...
协同标签系统中现有的用户建模方法将用户视为标签向量,并假设向量中的标签均是用户感兴趣的,且只能分别计算单个标签之间的匹配程度,忽略了多个标签作为一个整体对用户兴趣产生的影响.为此,文中提出了一种基于标签...
表现最佳的策略优先考虑重复工作,令人惊讶的是,它忽略了事前可观察到的信息,而是尝试使用新员工并生成体验信息。 与当前基于技能的匹配实践相比,此类策略可以使购买者的福利提高数据输入(网络开发)市场中总...
优先从本地的离线归属地及历史记录中查询数据并显示,没有查询到标记数据且有网络(有 WIFI 或手机未掉网)时会联网查询。 隐藏功能 (点击七次版本后出现) 1. 自定义数据源。可以自定义百度、聚合数据(360)的 API ...
或者说什么是匹配优先量词,什么是忽略优先量词? 好吧,我也不知道概念是什么,来举个例子吧。 某同学想过滤之间的内容,那是这么写正则以及程序的。 代码如下: $str = preg_replace(‘%[removed].+?[removed]%i’,...
或者说什么是匹配优先量词,什么是忽略优先量词? 好吧,我也不知道概念是什么,来举个例子吧。 某同学想过滤之间的内容,那是这么写正则以及程序的。 $str = preg_replace('%[removed].+?[removed]%i','',$str);//...
)特征高度可配置的过滤器系统黑名单/白名单三种红石模式(上电时忽略/打开/上电时关闭) 四种分配模式(轮循/最近优先/最远优先/随机) 标签过滤项目/流体/气体过滤一次多个过滤器每个过滤器的可配置目标将单个过滤...
或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR <命令> [ -<开关> ] <压缩文件> [ 列表文件...> ] [ ...
或者更精确的匹配拥有更高的优先权。例如,如果你用 *.cpp 和 f*.cpp 掩码, f*.cpp 拥有更高的优先权。 RAR 命令行语法 ~~~~~~~~~~~~~~ 语法 RAR <命令> [ -<开关> ] <压缩文件> [ 列表文件...> ] [ ...