`
wangangie14
  • 浏览: 42487 次
  • 性别: Icon_minigender_2
  • 来自: 珠海
最近访客 更多访客>>
社区版块
存档分类
最新评论

读《精通正则表达式》:标准量词是匹配优先的

 
阅读更多

  正则字符:^.*([0-9]+)
  待测字符:Copyright 2003.
  这个表达式的本意是捕获整个数字'2003',但结果并非如此。
  为了满足"[0-9]+"的匹配,".*"必须交还一些字符。在这个例子中,释放的字符是"3."(即最后的"3"和点号 ),之后"3"能够由"[0-9]"匹配。
  "[0-9]"由"+"量词修饰,所以现在还只做到了最小的匹配可能,现在它遇到了".",找不到其它可以匹配的字符。此时没有"必须"匹配的元素(已经满足了'[0-9]+'的匹配要求,后面没有更多的子表达式需要去匹配文本 ),所以".*"不会被迫交出0。
  否则,"[0-9]+"应当心存感激,接受匹配优先元素的馈赠,但请记住"先来先服务"原则(在这里相当于:'Copyright 200'已经被'.*'匹配,就不能再把数字'200'让'[0-9]+'去匹配了,因为'3'已经满足了 '[0-9]+ ')。
  匹配优先的结构只会在被迫的情况下交还字符(比如将'[0-9]+'改为'[0-9]{2,}',因为一个'3'不能满足,所以此时需要交还一个'0' )。所以,最终$1(即第一个分组)的值是"3"。
分享到:
评论

相关推荐

    精通正则表达式~~~

    精通正则表达式第三版 搜集于网络 前言..........I 第1章:正则表达式入门.... 1 解决实际问题... 2 作为编程语言的正则表达式... 4 以文件名做类比... 4 以语言做类比... 5 正则表达式的知识框架... 6 对于...

    Python正则表达式标准库使用教程.pdf

    本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。   ...

    [精通正则表达式(第三版)]

    其他量词:重复出现 46 括号及反向引用 48 神奇的转义 50 基础知识扩展 51 语言的差异 51 正则表达式的目标 51 更多的例子 51 正则表达式术语汇总 55 改进现状 58 总结 60 一家之言 61 第 2 章 入门示例...

    正则表达式、分组、子匹配(子模式)、非捕获子匹配(子模式)

    前面我们知道正则表达式有很多元字符表示匹配次数(量词),都是可以重复匹配前面出现的单个字符次数。有时候,我们可能需要匹配一组多个字符一起出现的次数。这个时候,我们需要分组了。就是用小括号来括起这些字符...

    正则表达式中包含三种元素分别为:量词、元字符、修饰符正则表达式中包含三种元素分别为:量词、元字符、修饰符

    正则表达式中包含三种元素分别为:量词、元字符、修饰符正则表达式中包含三种元素分别为,这是常用的很有用

    python正则表达式及使用正则表达式的例子

    正则表达式匹配过程 依次拿出表达式和文本中的字符串进行比价 如果每个字符都能匹配,则匹配成功;一旦有匹配不成功的字符,则匹配失败 如果有量词和边界,则匹配过程稍微有些不同 正则表达式语法规则 语法 ...

    正则表达式教程之模式修正符使用介绍

    本节会向大家介绍模式修正符的概念、模式修正符的构成,以及结合实例的模式修正符的演示,大家在学习完本节内容之后,就完全可以读懂正则表达式了。 什么是模式修正符? 1, 模式修正符就是几个字母,我们在每个正则...

    正则表达式分组实例详解

    如果想匹配3个数字,正则表达式可以用如下写法: \d{3} 以上代码使用重复量词可以匹配3位数字。 但是在实际应用中,往往需要重复多个字符,例如我想重复ab两个字符,使用以下代码就不合适了,代码如下: ab{3} 以上...

    .NET正则表达式基础教程代码

    .NET正则表达式基础使用教程。该文件为Visual Studio 2013项目文件。里面有4个小项目,分别用于介绍正则表达式的字符组,量词,分组,断言。具体请参考我即将推出的博客教程。谢谢各位。

    JavaScript正则表达式的贪婪匹配和非贪婪匹配

    非贪婪匹配就是尽可能少的匹配,用法就是在量词后面加上一个“?”,比如: "aaaaa".match(/a+?/); //["a", index: 0, input: "aaaaa"] 但是非贪婪匹配有时候和我们期待的并不一样,比如: "aaab".match(/a+b/); ...

    48 第二十三回:正则表达式推演千言万语,量词元字符匹配各种文章.mp4

    Python原来这么简单(win系统 提高篇)

    编写高质量的js之正确理解正则表达式回溯

    当一个正则表达式扫描目标字符串时,从左到右逐个扫描正则表达式的组成部分,在每个位置上测试能不能找到一个匹配。对于每一个量词和分支,都必须确定如何继续进行。如果是一个量词(如*、+?或者{2,}),那么正则...

    正则表达式教程

    本教程主要参考自网上最普遍的《正则表达式30分钟入门教程》(http://deerchao.net/tutorials/regex/regex.htm),这是一个非常优秀的教程,深入浅出讲解了正则表达式的基本概念,更加深入的内容可以参考CSDN上过客...

    PHP和正则表达式教程集合之二第1/2页

    正则表达式快速入门(二) 【导读】在本文里,我们主要介绍子模式(subpatterns),逆向引用(Back references)和量词(quantifiers) 在上篇文章里,我们介绍了正则表达式的模式修正符与元字符,细心的读者也许会发现,...

    正则表达式{n,m}量词(至少n次,最多m次)

    正则表达式{n,m}量词: {n,m}量词可以重复前面匹配的字符n-m次,至少n次,最多m次。 语法结构: 构造函数方式: new RegExp("x{n,m}") 对象直接量方式: /x{n,m}/ 浏览器支持: IE浏览器支持此元字符。 火狐浏览器支持...

    javascript 进阶篇1 正则表达式,cookie管理,userData

    首先,什么事正则表达式呢,其实引入概念很多时候并不能帮我们明白它到底是什么,所以我先简单描述下,正则表达式,其实就是一个记录字符串规则则的字符串,等我们看完这一部分,也就能明白它到底是什么了。...

    正则表达式

    正则表达式中包含两种元素分别为:量词、元字符,是java,html,java web学习的资料。

    Python 正则表达式完整示例教程

    文章目录正则表达式元字符基本元字符:预定义字符使用量词贪婪量词字符分组反向引用分组非捕获分组re模块介绍search()和match()函数match对象的方法findall()和finditer()字符串分割和替换编译正则表达式 正则表达式...

    PHP 正则表达式效率 贪婪、非贪婪与回溯分析(推荐)

    先扫盲一下什么是正则表达式的贪婪,什么是非贪婪?或者说什么是匹配优先量词,什么是忽略优先量词,好吧,下面通过实例给大家介绍下PHP 正则表达式效率 贪婪、非贪婪与回溯分析,一起看看吧

    正则表达式之回溯

    我们所使用的正则表达式的匹配基础大概分为:优先选择最左端(最靠开头)的匹配结果和标准的匹配量词(*、+、?和{m, n})是匹配优先的。 “优先选择最左端的匹配”顾名思义就是从字符串的起始位置开始匹配直到匹配...

Global site tag (gtag.js) - Google Analytics