perl编程24学时教程006

perl编程24学时教程006

ID:33838346

大小:747.79 KB

页数:13页

时间:2019-02-28

perl编程24学时教程006_第1页
perl编程24学时教程006_第2页
perl编程24学时教程006_第3页
perl编程24学时教程006_第4页
perl编程24学时教程006_第5页
资源描述:

《perl编程24学时教程006》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、下载第6学时模式匹配在上个学时中,我们介绍了如何从文件中读取数据的方法。懂得这个方法后,再加上标量、数组和运算符方面的知识,就可以准备对该数据进行操作,以便做你想要做的任何事情。有时,文件中的数据没有采用便于使用的格式进行格式化,它不能使用简单的split函数对数据进行分割,或者有的文件行包含了你不感兴趣的数据,你想通过编辑将它删除。你必须具备一种能力,来识别输入数据流中的模式。根据这些模式来选择数据,并且对数据进行编辑,使之变成比较容易使用的格式。Perl的工具中有一个工具可以用来执行这项任务,即正则表达式。在本学时的课文中

2、,正则表达式与模式几乎可以互换使用。正则表达式本身几乎是一种语言,它是用于描述要匹配模式的正式方法。在本学时中,我们将要介绍一些关于这种模式匹配的语言。在线文档对Perl使用的完整的正则表达式语言进行了更加深入的(但是比较扼要的)描述。你可以查看Perl中包含的perlre文档。这个问题涉及的内容非常广泛,因此有人出版了整整一本书来介绍正则表达式。Perl界大力推荐的这本书名叫“MasteringRegularExpressions”,它是由JefferyE.F.Friedl撰写的,1997年出版。它全面介绍了正则表达式,并且

3、对Perl给予了很大的关注。正则表达式也可以用于其他编程语言,如TCL、JavaScript、Pathon和C语言。UNIX操作系统的许多实用程序也使用正则表达式。Perl正好配有一组非常丰富的正则表达式,这与其他操作系统的情况非常相似,学习这些正则表达式不仅有助于你在Perl中的应用,而且可以用于其他语言。在本学时中,你将学习:¥如何创建简单的正则表达式。¥如何使用正则表达式进行模式匹配。¥如何使用正则表达式来编辑字符串。6.1简单的模式在Perl中,模式被括在模式匹配运算符中间,有时该运算符采用m//的形式。下面就是一种简

4、单的模式:m/simon/上面这个模式依次与字母S-i-m-o-n相匹配。但是究竟在什么地方才能找到Simon呢?以前我们讲过,Perl变量$_常常用于Perl需要默认值的时候。模式匹配是根据$_来进行的,除非你告诉Perl用别的方式来进行匹配(后面我们将要介绍)。因此前面的模式可以在标量变量$_中寻找S-i-m-o-n。如果由m//规定的模式可以在变量$_中的任何地方找到,那么匹配运算符返回真。这样,第6学时模式匹配使用65下载能够看到匹配模式的正常位置是在条件表达式中,如下所示:在这个模式中,除非字符是个元字符,否则每个字

5、符均与自己相匹配。大多数“标准”字符均与自己相匹配,这些字符包括A至Z、a至z和数字。元字符是指改变了模式匹配运行特性的那些字符。下面是元字符的列表:下面我们很快就要介绍元字符能够做些什么。在你的模式中,如果想要匹配元字符的原义值,只需要在元字符的前面加上一个反斜杠即可,如下所示:前面我们已经讲过模式匹配运算符通常用m//来表示。实际上,可以用你想要的任何其他字符来代替斜杠,如下面这个例子所示:在许多情况下,当模式中包含斜杠(/)时且模式的结尾则可能与模式内的斜杠相混淆,可用另一个字符来代替它,因此括号里面的斜杠的前面必须加上

6、反斜杠,如下所示:可以编写下面这个代码,使上面的代码更加容易阅读:如果将模式括起来的字符(称为界限符)是斜杠,那么编写模式匹配代码时也可以不带m。因此,也可以将m/Cheetos写成/Cheetos/。通常情况下,除非需要使用不是斜杠(//)的其他界限符,否则,可以只使用斜杠而不使用m来编写模式匹配代码。变量也可以用在正则表达式中。如果在正则表达式中看到一个标量变量,Perl首先计算该标量,然后查看正则表达式。这个功能使你能够动态地创建正则表达式。下面这个if语句中的正则表达式是根据用户输入创建的:联机手册页和其他文档中的正则

7、表达式有时称为RE或regexp。为了清楚起见,在本书中将继续将它们称为正则表达式。匹配的规则当你开始在Perl中编写正则表达式时,应该知道它必须遵循几条规则。不过,规则并不多,大多数规则在你理解它们之后才具有更大的意义。这些规则是:¥通常情况下,模式匹配从目标字符串的左边开始,然后逐步向右边进行匹配。¥如果并且只有当整个模式能够用于与目标字符串相匹配时,模式匹配才返回真(在任何66使用第一部分Perl基础下载上下文中均如此)。¥目标字符串中第一个能够匹配的字符串首先进行匹配。正则表达式不会漏掉某一个能够匹配的字符串,而去寻找

8、另一个更远的字符串来进行匹配。¥进行第一次最大字符数量的匹配。你的正则表达式可能迅速找到一个匹配的模式,然后设法尽可能延伸能够匹配的字符范围。正则表达式是“贪婪的”,也就是说,它会尽可能多地寻找能够匹配的字符。6.2元字符在下面的所有例子中,与模式相匹配的文本部分用下划线标出

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。