上一题下一题
跳转到
 
 
  世界如此多姿,发展如此迅速,窥一斑未必还能知全豹。但正如万花筒一样,每一个管窥都色彩斑斓。  
 
 
  知识通道 | 学习首页 | 教师首页 | PK首页 | 知识创造首页 | 企业首页 | 登录
 
本文对应知识领域
正则表达式中的零宽断言
作者:deerchao 申领版权
2010年10月25日 共有 1894 次访问 【添加到收藏夹】 【我要附加题目
受欢迎度:

    零宽断言
    
    我们已经讨论了前两种语法。第三个 (?:exp) 不会改变正则表达式的处理方式, 只是这样的组匹配的内容 不会像前两种那样被捕获到某个组里面,也不会拥有组
     。“我为什么会想要这样做?”——好问题,你觉得为什么呢?
    
    接下来的四个用于查找在某些内
    容(但并不包括这些内容)之前或之后 的东西,也就是说它们像 \b , ^ , $ 那 样用于指定一个位置,这个位置应该 满足一定的条件(即断言),因此它们 也被称为 零宽断言 。最好还是拿例 子来说明吧:
    
    地球人,是不是觉得这些术语名称太 复杂,太难记了?我也有同感。知道有这 么一种东西就行了,它叫什么,随它去 吧!人若无名,便可专心练剑;物若无 名,便可随意取舍……
    
    (?=exp) 也叫 零宽度正预测先行
    断言 ,它 断言自身出现的位置的后 面能匹配表达式exp 。比如 \b\w (?
    =ing\b) ,匹配 ing结尾的单词的前
    
    断言用来声明一个应该为真的事实。 正则表达式中只有当断言为真时才会继续 进行匹配。
    
    面部分(除了ing以外的部分) ,如查找 I'm singing while you're dancing. 时,它会匹配
    sing 和 danc 。
    (?<=exp) 也叫 零宽度正回顾后发断言 ,它 断言自身出现的位置的前面能匹配表 达式exp 。比如 (?<=\bre)\w \b 会匹配 re开头的单词的后半部分(除了re以外的部
    ) ,例如在查找 reading a book 时,它匹配 ading 。
    假如你想要给一个很长的数字中每三位间加一个逗号(当然是从右边加起了),你 可以这样查找需要在前面和里面添加逗号的部分: ((?<=\d)\d{3}) \b ,用它对
    1234567890 进行查找时结果是 234567890 。
    下面这个例子同时使用了这两种断言: (?<=\s)\d (?=\s) 匹配 以空白符间隔的数 (再次强调,不包括这些空白符)

    

 

相关新闻

正则表达式中的平衡组/递归匹配
正则表达式中的注释
正则表达式中的常用分组语法
正则表达式中的后向引用
正则表达式中的反义
正则表达式中的分组
正则表达式中的分枝条件
正则表达式中的字符转义
正则表达式中的元字符

您可能对这些感兴趣  

《VB程序设计基础》选择题
设计模式之Iterator
设计模式之Visitor
设计模式之Interpreter(解释器)
设计模式之Mediator(中介者)
设计模式之Strategy(策略)
设计模式之State
设计模式之Command
设计模式之Chain of Responsibility(职责链)
设计模式之Observer

题目筛选器
日期:
类型:
状态:
得分: <=
分类:
作者:
职业:
关键字:
搜索

 
 
 
  焦点事件
 
  知识体系
 
  职业列表
 
 
  最热文章
 
 
  最多引用文章
 
 
  最新文章
 
 
 
 
网站介绍 | 广告服务 | 招聘信息 | 保护隐私权 | 免责条款 | 法律顾问 | 意见反馈
版权所有 不得转载
沪ICP备 10203777 号 联系电话:021-54428255
  帮助提示    
《我的太学》是一种全新的应用,您在操作中遇到疑问或者问题,请拨打电话13564659895,15921448526。
《我的太学》