Chinaunix首页 | 论坛 | 博客
  • 博客访问: 400075
  • 博文数量: 57
  • 博客积分: 193
  • 博客等级: 入伍新兵
  • 技术积分: 1192
  • 用 户 组: 普通用户
  • 注册时间: 2012-12-13 14:37
个人简介

当以艺术眼光看程序,寻找程序后面的原理,做到化而不忘

文章分类

全部博文(57)

文章存档

2017年(5)

2015年(7)

2014年(27)

2013年(18)

我的朋友

分类: Windows平台

2014-06-08 19:31:31

在正则表达式中有,如果没有环视,则只有两个结果:匹配和不匹配。而有了环视,则相当于为匹配附加了条件,且并非真正的匹配,只是试探一下。这就可以在不匹配的情况下进行定位。环视又叫断言,预搜索。

环视按照方向划分有顺序和逆序两种,按照是否匹配有肯定和否定两种,组合起来四种环视。顺序环视相当于在当前位置右侧附加一个条件,而逆序环视相当于在当前位置左侧附加一个条件。(这部分是抄的)

表达式

说明

(?<=Expression)

逆序肯定环视,表示所在位置左侧能够匹配Expression

(?

逆序否定环视,表示所在位置左侧不能匹配Expression

(?=Expression)

顺序肯定环视,表示所在位置右侧能够匹配Expression

(?!Expression)

顺序否定环视,表示所在位置右侧不能匹配Expression

怎么记呢?感觉这个结构很像C中的用法,!表示否定(!==号省略了),=表示肯定,<表示逆序(向左是逆向,因为一般理解向右是顺序),没有<就是顺序,?是模式的符号标志。环视也就是表示左侧或右侧能出现或不能出现表达式。简单理解:环视=有条件地试匹配。

另外,可以看到,环视两边,也就是对边界提出了要求,所以,我觉得环视的本质可理解为非匹配的条件边界

阅读(1999) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~