概述
声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
2.1 特殊字符匹配
在Perl 正则中,某些字符具有特殊含义,譬如“?”、“*”、“.”、“+”等。如果模式串需要把这些符号当作纯文本来处理的话,就必须在它前面加上反斜杠()。
比如:
#perl4-2.pl my $name="你叫什么名字?"; my $filename="plane.jpg"; if ($name=~m/?/){ print "$name是疑问句n";#匹配疑问句 } if ($filename=~m/.jpg$/){ print "$filename为JPG类型图像文件n";#文件扩展名为jpg }
输出结果如下:
你叫什么名字?是疑问句
plane.jpg为JPG类型图像文件
2.2 第五个任务公司新开发的小型ERP系统试运行时,经常出故障,小黄奉命查出故障来源,系统记录用户操作保存在run.log的日志文件中。
run.log的结构大致如下,每列信息以#相隔。
2010-07-01#09:12:10#zhangsang login success
2010-07-01#09:15:30#zhangsang save success
2010-07-01#09:16:50#lisi login error#系统错误#用户不存在
2010-07-01#09:18:05#zhangsang exit success
2010-07-01#13:19:10#wangwu login error#系统错误#密码错误
2010-07-02#09:20:10#lisi login success
2010-07-02#09:31:32#lisi save error#SQL执行失败#insert error
2010-07-02#09:28:32#lisi exit success
由于日志文件过于巨大,小黄无法人工查找错误,只能用perl编写以下脚本筛选错误,并将错误输出到单独的文本文件runerr.txt中。
#perl4-3.pl use strict; use warnings; open LOG,"<run.log"; open ERRLOG,">runerr.txt"; foreach my $line(<LOG>){ if ($line=~m/error/i) {#只匹配日志中的错误事件,错误事件都包括“error”字符 chomp($line);#去除换行符 (my $mydate,my $mytime,my $mysj,my $myerr,my $errinfo)=split("#",$line);#获取事件信息 print ERRLOG "--------n"; print ERRLOG "日期:$mydaten时间:$mytimen事件:$mysjn错误类型:$myerrn错误信息:$errinfon";#输出错误信息到runerr.txt中 } } close LOG; close ERRLOG;
脚本执行完毕后,打开runerr.txt,错误信息如下,一目了解:
--------
日期:2010-07-01
时间:09:16:50
事件:lisi login error
错误类型:系统错误
错误信息:用户不存在
--------
日期:2010-07-01
时间:13:19:10
事件:wangwu login error
错误类型:系统错误
错误信息:密码错误
--------
日期:2010-07-02
时间:09:31:32
事件:lisi save error
错误类型:SQL执行失败
错误信息:insert error
最后
以上就是帅气早晨为你收集整理的神奇的Perl-正则表达式(3)的全部内容,希望文章能够帮你解决神奇的Perl-正则表达式(3)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复