perl正则表达式.doc.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
perl正则表达式.doc.doc

7. 正则表达式 正则表达式其实并不是Perl的专利,相反的,在很多Unix系统中都一直有不少人使用正则表达式在处理他们日常生活的工作。尤其在许多Unix系统中的log更是发挥正则表达式的最好历练,系统把所有发生过的状况都存在log档之中,可是你应该怎么找出你要的资讯,并且统计成有用的资料。当然,大部份的Unix管理员可以求助许多工具,不过很大多数的状况下,这些工具也是利用正则表达式在进行,所以如果说一个足够深入管理Unix的系统管理员都曾经直接,或是间接的使用过正则表达式,我想应该很少人会反对吧。不过这显然也充分的表达出正则表达式的重要性。 7.1 Perl 的第二把利剑 没错,正则表达式并不是Perl所独有,或由Perl首创。可是在Perl之中却被充分发挥,还有人说如果Perl少掉了杂凑跟正则表达式,那可就甚么都不是了。情况也许没有这么誇张,可是却可以从这里明显感觉出??正则表达式在Perl世界中所占有的地位。对于许多人而言,听到Perl的时候总不免听其他人介绍Perl的文字处理能力,而这当然也大多是拜正则表达式所赐。 7.2 甚么是正则表达式 讲了那么多,那到底甚么是正则表达式呢?简单的说,就是样式比对。大部份的人用过各种文字处理器,文书编辑器,应该或多或少都用过编辑器里面的搜寻功能,或是比对的功能吧!我彷彿听到有人回答:那是基本功能啊。是啊,而且那也是最基本的样式表示。就像我要在一大堆的文字中找到某个字串,这确实是非常需要的功能。不过如果你写过其他程序语言,那么你不妨回想一下,这样的需求你应该怎么表达呢?或者假设你现在是公司的网路管理员,如果你拿到一个邮件伺服器的log档案,你希望找到所有寄给某个同事的所有邮件寄送资料,而你现在手上也许正在使用C或Java,或其他程序语言,你要怎么完成你的工作呢?这样说好像太过抽象,也许我们应该来举个文件中搜寻关键字的例子。 例如我希望在perlfunc这份Perl文件中找sort这个字串,这样的需求很简单,大部份的时候你也都可以完成这样的程序。可是我如果希望找到sort或者delete呢?好吧,虽然麻烦,不过多花点时间还是没问题的。不过实际去找了之后,我发现找出来的结果真是非常的多。于是我看到某些找到的结果是这样的: ? sort SUBNAME LIST sort BLOCK LIST sort LIST 没错,这些正是我想要找的结果,可是如果一个一个找也实在太辛苦了。所以如果我可以把这些东西写成一个样式,让程序去辨别这样样式,符合样式条件的才传回来,这样一来,应该比较符合我们的期待了。而所谓符合的条件,也就是我们所希望的「样式」,于是我们开始想像这个样式会是甚么样子,在这个例子中,我们开始设计我们需要的样式:以sort开始,中间可能有一些其他的字,可能没有,最后接着一个LIST,于是符合这样的样式都是我们所要搜寻的结果。相反的,如果在文章中其他地方出现的sort,可是并没有符合我们的样式,那么也不能算是成功的比对。 就这样,当我们再度拿起其他程序语言时,好像忽然觉得很难下手,因为要完成这样的工作,显然是非常的艰辛。不过在Perl的正则表达式中,这才是刚开始。因为你也许会希望在浩瀚的网路中找到你想要的某些资料,你也许知道某个网站有你所需要的资讯,比如每天的股票收盘价格,而你希望程序每天自动收集这些资讯之后自动去分析股票的走势。当然,也许你已经可以每天派出机器人去各大新闻网站收集最新的消息,可是你也许需要利用正则表达式去萃取对你有帮助的新闻内容。或者你根本就想模仿google,去进行新闻的比对,然后过滤掉相同的新闻,利用机器人完成一份足够动人的报纸。当然,并不是用了正则表达式就可以轻易完成这些工作,不过相较于其他开发工具,Perl在这方面显然占有相当大的优势。 7.3 样式比对 在Perl中,你要进行比对前,应该先产生出一个你所需要的「样式(pattern)」,也就是说,你必须告诉Perl:在寻找的目标里,如果发现存在着我所指定的样式,就回传给我。也就是说,你必须告诉Perl,我需要的东西大概长的像这个样子,如果你有任何发现,就回传给我。 所以样式的写法与精准与否就会影响比对的结果,通常而言,如果你发现比对出来的结果跟你的想像有所差距,那么你显然应该从比对的样式着手,看看样式上到底出了甚么差错。因为当你把结果反过来跟原来所写的样式比对,就会发现这些回传结果确实还是符合比对的样式。当然,要写出正确的样式是必须很花精神的,或者应该说要非常小心的。 如果我们要以简单的方式来描述样式的模型,那么我们可以说样式其实是由一个个单一位元所组成出来的一个比对字串。例如最简单的一个单字是一个样式,就像你写了一个Perl,他就是一个样式。可是在样式中也可能有一些特殊符号,他们虽然没办法用一般的字符来表

文档评论(0)

170****0532 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:8015033021000003

1亿VIP精品文档

相关文档