开发者社区


C++/C | Java | .Net/Windows | Linux/Unix | 开源 | 其他
首页 - 编程
编程
全文搜索:   

在你的动态表达式里嵌入模式匹配修饰符
作者: ZDNet China
2004-02-12 14:44:53


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



责任编辑:李宁

欢迎评论投稿

声明:
Builder.com.cn(原ZDNet China应用开发频道)原创文章版权所有,未经许可严禁转载,且不构成投资建议。
近期相关报道:
实用技术文档
J2me XML
C/C++ C#
Java Oracle
Mysql .Net
VB.NET CSS
SQL Server 数据库
SQL UNIX
Linux Jsp
PHP Perl
Javascript IIS
XHTML ColdFusion
ASP/ASP.NET Apache
AJAX
订阅技术邮件
订阅"技术圈"杂志!请在下面选择您感兴趣的专题,填写e-mail地址,然后按订阅按钮:
应用开发管理
VS.NET 周刊
Database 周刊
WEB Service周刊
JAVA 周刊
IT 认证
Windows服务器周刊
互联网开发
当Windows Server 2008专家得5000元现金大奖
CNET NETWORKS 中国: 爱卡汽车网 | CNET科技资讯网 | e询网 | CWEEK | 蜂鸟网 | GameSpot China | 个人电脑 | PChome | SPN | 网友世界 | ZDNet China | 中关村在线
CNET NETWORKS 美国: BNET | CNET.com | CNET Download.com | CNET News.com | CNET Reviews | CNET Shopper.com | GameSpot | MP3.com | mySimon | Release 1.0 | Search.com | TechRepublic | TV.com | Webshots | ZDNet
Copyright (c) 2006 CNET Networks 版权所有。 ZDNet 是CNET Networks公司注册服务商标。
ZDNet 公司标识是 CNET Networks公司注册服务商标。
中华人民共和国电信与信息服务业务经营许可证编号:京ICP证010391号