我是靠谱客的博主 帅气早晨,最近开发中收集的这篇文章主要介绍神奇的Perl-正则表达式(3),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

声明:本神奇的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)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(45)

评论列表共有 0 条评论

立即
投稿
返回
顶部