• --:)欢迎访问锋网源码(:--
  • 首页
  • RSS订阅
  • 常用软件
  • 网页模板
  • 网站运作
  • 锋网学院
  • 繁體中文

  • 学院首页
  • 新闻资讯
  • 网站运营
  • 网站开发
  • 美工设计
  • 数据库类
  • 服务器类
  • 网络应用
  • 操作系统
  • 软件教学
编程开发   认证考试   网络安全   文章搜索: 高级搜索
会员登录/控制面版 您的位置: 学院首页 >> 编程开发 >> Perl教程 >> 文章内容
 

精彩推荐

 
 

本类推荐文章

 
 

本类阅读排行

  • LINUX
  • 用Perl饼来替换文件中的字符..
  • PERL下的正则表达式
  • Perl小技巧:文件操作
  • 构建一个Perl/CGI投票系统
  • Perl的经典用法:读入多个记录..
  • 如何使用strict和warnings
  • Perl简介
  • Perl的经典用法:用正则表达式..
  • 使用Perl连接Mysql数据库
  • 用Perl来分析并生成中文Exce..
  • 《极限编程》前言及第一章
  • PerlCookbook2介绍
  • Perl简单模块指南
  • 使用Maypole进行快速Web应用..
  • 受限制环境安装Perl模块方法
  • proftpdlog文件实时分析,动..
  • Perl的经典用法:读入段落
  • ADODB与PearDB的兼容部分
 
 

Perl的经典用法:用正则表达式对文件进行操作

  • 日期:2007-10-20     人气:     出处:     作者:
  • 字体大小:
  • 小
  • 中
  • 大

一旦你有个包含了整个串的变量,你可以使用正则表达式,对整个文件进行操作,而不是对文件中的某个块进行操作。有两个有用的正则表达式标记/s和/m。一般,Perl的正则表达式对行进行处理,你可以这样写:

undef$/;

$line=;

if($line=~/(b.*grass)$/){

print"found$1\n";

}

如果把我们的文件填入如下内容:browngrass

bluegrass

则输出为:

foundbluegrass

它没有找到“browngrass”,这是因为$仅在串尾寻找其匹配,(或者在串结束前的一行)。如果在包含很多行的串中,用"^"和"$"来匹配,,我们可以使用/m("multiline")选项:

if($line=~/(b.*grass)$/m){}

现在程序会把如下的信息输出:

foundbrowngrass

类似地,句点可以匹配除了换行符之外的所有字符:

while(){

if(/19(.*)$/){

if($1<20){

$year=2000 $1;

}else{

$year=1900 $1;

}

}

}

如果我们从文件中读入“1981”,$_将包含“1981\n”。正则表达式中的句点匹配“8”和“1”,而不匹配“\n”。这里正需要这样做,因为换行符不是日期的组成部分。

对于一个包含很多行的串,我们也许要提取其中的大的块,这些块可能会跨越行分隔符。在这种情况下,我们可以使用/s选项,并用句点来匹配除了换行符以外的所有字符。

if(m{(.*?)}s){

print"Foundboldtext:$1\n";

}

此处,我用了{}来表示正则表达式的起始和结束,而不用斜杠,所以,我就可以告诉Perl我正在匹配,起始字符为"m",结束字符为"s"。你可以把/s和/m选项组合使用:

if(m{^(.*?)}sm){

#...

}

总结

有两种方法打开文件:open()函数的特点是快速简捷,而sysopen()函数功能强大而复杂。通过操作符,可以读入一个记录,$/变量可以让你控制记录是什么。如果你打算把很多行的内容读入到一个串中,不要使用忘记/s和/m这两个正则表达式标记。


相关文章
  • QQ帮你突破网吧硬盘访问限制
  • 局域网内盗用IP的安全问题
  • 邮件安全攻略:只要糖衣不要炮弹
  • 手机病毒的分类及其防范措施
  • 如何防止黒客远程盗取QQ密码
  • 始料未及,谁在控制电脑重新启动
  • 网络常见木马的手工清除方法
  • 魔高一尺 道高一丈
  • 防火墙日志记录让蠕虫病毒无处可逃
  • 提防他人动用电脑另有妙招
相关软件

  • 网友评论:
  • 查看所有评论
  • 我要发表评论
 

关于本站 | 广告联系 | 版权声明 | 网站地图 | 加入收藏 | 帮助中心 |

Copyright © 2006-2007 fwvv.net  程序支持:木翼  皖ICP备06004916号  

感谢:点击网络 联网科技 天盈信息 中国E速网 59互联  提供服务器及带宽赞助