慎重作出论断

ZDNet软件频道 时间:2004-02-09 作者:ZDNet China |  我要评论()
本文关键词:perl
Perl为正规表达式定义一致性扩展语句,比如注释,聚类,植入改造,和零边界的论断。
本文译自Builder.com,未经许可请勿转载

  perl为正规表达式定义一致性扩展语句,比如注释,聚类,植入改造,和零边界的论断。

   在前和在后的论断有大概四个可能的积极的和消极的组合,积极的向前,消极的向前,积极的向后,和消极的向后。这些都允许你测试文本的存在和不存在,这些文本都符合一个普通的表达式,这个表达式并不消耗这个文本。

积极和消极的前缀处理存在或者不存在的文本,这个文本环绕一个特殊的样式。向前或者向后意味着这个测试是否在文本中向前向后。

比如,为了检测三个数字它们在一个或多个数字之后,比如,当你插入一个逗号,使用一个积极的断言。这个测试中至少有一个单个。在这3个数字中每个数字后重复使用逗号来完成测试。

记住,向前或者向后断言是零边界,这就意味着在断言中的样式不是匹配文本中的一部分。比如,$&--or $MATCH,在英语角度来说不包含断言中的样式。

看看下面的代码:

$text = "this or that or the other";
$text =~ /(?<=that )or/i;
print "Before: '$`', Matched: '$&', After: '$'' ";

注意单词that和被拖拽的空间不是匹配文本的一部分。取而代之的是在前面匹配的文本的一部分。

perl支持下面的断言:

(?=pattern) # zero-width positive look ahead
(?!pattern) # zero-width negative look ahead
(?<=pattern) # zero-width positive look behind
(?<!pattern) # zero-width negative look behind

下面有些例子解释四个向前或者向后的断言:

·/w+(?=s)/:积极向前:这个形式匹配一个或者多个被空白字符紧跟的单词字符,但是其中并不包括匹配形式的空白字符。

·/d(?!d)/:消极向前:这个形式严格的匹配三个数字被其他非数字的字符紧跟的形式。这个不消耗非数字。

·/(?<=-)d/:积极向后:这个形式匹配四个数字,这四个数字由dash领先。Dash不是在匹配字符中被捕获的。

·/(?<!,)d/:消极向前:这个形式匹配三个数字,这三个数字不被一个逗号领先。这个逗号不是匹配字符部分。



责任编辑:李宁

欢迎评论投稿

百度大联盟认证黄金会员Copyright© 1997- CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号 京ICP备09041801号-159
京公网安备:1101082134