做日志分析工作的经常需要跟成千上万的日志条目打交道,为了在庞大的数据量中找到特定模式的数据,常常需要编写很多复杂的正则表达式。例如枚举出日志文件中不包含某个特定字符串的条目,找出不以某个特定字符串打头的条目,等等。
正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)的概念,这两个术语非常形象的描述了正则引擎的匹配行为。需要注意一点,正则表
达式中的前和后和我们一般理解的前后有点不同。一段文本,我们一般习惯把文本开头的方向称作“前面”,文本末尾方向称为“后面”。但是对于正则表达式引擎来说,因为它是从文本头部向尾部开始解析的(可以通过正则选项控制解析方向),因此对于文本尾部方向,称为“前”,因为这个时候,正则引擎还没走到那块,而对文本头部方向,则称为“后”,因为正则引擎已经走过了那一块地方。
所谓的前瞻就是在正则表达式匹配到某个字符的时候,往“尚未解析过的文本”预先看一下,看是不是符合/不符合匹配模式,而后顾,就是在正则引擎已经匹配过的文本看看是不是符合/不符合匹配模式。符合和不符合特定匹配模式我们又称为肯定式匹配和否定式匹配
。
现代高级正则表达式引擎一般都支持都支持前瞻,对于后顾支持并不是很广泛,因此我们这里采用否定式前瞻来实现我们的需求。
第一个分组啥都没有匹配到,而第二个分组却匹配了整个字符串。再回过头来好好分析一下刚才那个正则表达式。实际上,当正则引擎解析到A区域的时候,就已经
开始执行B区域的前瞻工作。这个时候发现当A区域为Null的时候匹配成功——.*本来就允许匹配空字符,前瞻条件又满足,A区域后面紧跟着的是
“2009”字符串,而并不是robots。因此整个匹配过程成功匹配到所有条目。
将.*?移入前瞻表达式
分享到:
相关推荐
C#正则表达式应用C#正则表达式应用C#正则表达式应用C#正则表达式应用
php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程php正则表达式系统教程
正则表达式分析工具V2.0,分析正则表达式的好帮手!
php正则表达式大全
正则表达式在程序开发中的应用比较广泛,通过对正则表达式的介绍,可以让你在程序开发中,规范又便捷!
详细描述正则表达式语法,帮助学会应用正则表达式
PHP用正则表达式过滤超链接,正则表达式过滤
PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试PHP 去HTML,截取指定汉字正则表达试...
PHP常用正则表达式PHP常用正则表达式PHP常用正则表达式PHP常用正则表达式PHP常用正则表达式PHP常用正则表达式PHP常用正则表达式
正则表达式+词法分析
正则表达式在excel下的应用实例,难得的精品。。。。。。
正则表达式在Ext中,要加/^ $/,比如/^[0-9]{1,9}$/ 正则表达式在JAVA中应用 正则表达式在JAVA中应用 正则表达式在JAVA中应用 正则表达式在JAVA中应用
正则表达式的高级应用 哈希表的应用 list 的 米索问题 map的再正则表达式的应用
Java正则表达式应用总结
php正则表达式手册,系统的介绍了正则表达式的使用,适合初学者学习
正则表达式在PHP中的应用.pdf
正则表达式的分析工具,能够让新手更好的理解如何应用正则表达式
很全的php正则表达式全集,应该对大家会有帮助的
PHP正则表达式教程,从基本概念、语法规则、到匹配、拆分、替换,末尾还有常用的验证应用举例。最后希望大家都能熟练掌握正则表达式的知识并正确运用。
PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的正则表达式PHP一些常用的...