在你的动态表达式里嵌入模式匹配修饰符

ZDNet软件频道 时间:2004-02-12 作者:ZDNet China |  我要评论()
本文关键词:perl
Perl支持将ignore case和multiline mode这样的模式匹配修饰符(pattern-match modifier)嵌入到模式里。这在使用动态模式(例如,从文件或者利用命令行读取的模式)的时候非常有用。
本文译自Builder.com,未经许可请勿转载 perl支持将ignore casemultiline mode这样的模式匹配修饰符(pattern-match modifier)嵌入到模式里。这在使用动态模式(例如,从文件或者利用命令行读取的模式)的时候非常有用。

嵌入式模式匹配使用扩展模式句法,这种句法将一个问号作为第一个字符放在一对圆括号里。例如,要搜索字符串foo,同时忽略掉它的大小写就要使用:

$string =~ /(?i)foo/;

(使用)修饰符要比使用在模式最后放上一个/i修饰符的程序句法(假设该模式从文件读入)灵活得多。

下面四种模式匹配修饰符都是可嵌入的。(关于这些修饰符)完整讨论见perl的文档。

  • i-不区分大小写的模式匹配
  • m -将字符串作为多行对待(“^”和“$”分别用于匹配行的开始和结束)
  • s -将字符串作为单行对待(“.”能够匹配新的行)
  • x -允许在模式里放入空白和注释

在一个或者多个模式匹配修饰符之前加上一个连字符(“-”)会关闭这些修饰符。

此外,你要知道修饰符会在一个封闭的空间内被本地化。例如,想想下面的模式:

/((?i)foo)bar/

它会匹配大写或者小写的foo,但是只会匹配小写的bar,因为大小写不敏感修饰符只应用到了封闭的块里。

perl的嵌入式模式匹配修饰符,使得在配置文件里和利用命令行支持动态模式变得非常简单,而不需要利用复杂的句法来支持大小写不敏感比较这样的匹配选项。



责任编辑:李宁

欢迎评论投稿

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