郁闷,被一个'.'通配符折磨了半天
2009-06-10 16:17
225 查看
今天需要从一个html网页中提取一个信息,写了个perl脚本,在配正则式的时候,用到了'.*'去匹配两个'<'之间的内容,奇怪的是老是出错,百思不得其解,最后终于找到了,原来'.'匹配的是除换行符以外的任何字符,怪不得,于是改为(/s|.)*这样就没问题了。
最后说明一下,要提取的内容是下面样的模板:
最后说明一下,要提取的内容是下面样的模板:
perl 代码如下:#!/usr/bin/perl $filename="ipv6.html"; $newfile="ipv6.playlist"; open my $NEWFILE, '>>:encoding(unicode)', $newfile or die "couldn't creat $newfile"; my $str; open my $FILE, '<:encoding(gb2312)', $filename or die "couldn't open $filename"; while (<$FILE>) { last if (m/<div class="opt">/); $str .= $_; } #用(/s|.)*?解释,括号里是为了匹配所有字符,包括换行符,?是为了取消贪婪匹配。 while ( $str =~ m/(<tr class="trbg0">(/s|.)*?<//tr>)/g ) { &extract($1); } sub extract { my ($str) = @_; print $NEWFILE $1."/n" if($str =~ m/<font class="bodytitle" color="#[/w]*">(.*?)<//font>/); print $NEWFILE $1."/n" while ($str =~ m/<a href="(mms:.*?)" mce_href="(mms:.*?)">/g); } ~ ~ ~
相关文章推荐
- Hive中LIKE查询使用通配符'%'的一个BUG--当转义符'\'遇到通配符'%'或'_'
- 在一个框架中,如何用window.location='';的命令返回主页,而不是在框架中返回主页
- 读入一个整数,统计并输出该数字中数字'2'的个数。
- 记录一个思路 错误【消息: 'NTES.one(...)' 为空或不是对象 】Chrome没事,ie等内核浏览器报错
- 《Orange's 一个操作系统的实现》学习笔记--保护模式进阶
- 《Orange's 一个操作系统的实现》读书手记3(2)--- [ 保护模式(Protect Mode)]
- 《Orange's 一个操作系统的实现》读书手记3(3)--- [ 保护模式(Protect Mode)]
- // 写一个函数,实现将一个字符串中的'/t'替换成四个'*', '/t'个数不定。如char *p="ht/thdsf/t/ttt/tfds dfsw/t ew/t",替换后p="ht****hdsf********tt****fds dfsw****
- Oragne's 一个操作系统的实现的环境搭建【ubutu+win7】
- 有关Mysql出现Lost connection to MySQL server at 'reading initial communication packet', system error: 0的一个解决方案
- 《Orange'S:一个操作系统的实现》学习笔记(三)--bochs
- 《Orange's 一个操作系统的实现》学习笔记--分页机制
- <%'我给大家一个函数,代替ASP中的Request函数,可以对一切的SQL注入Say NO,函数如下:
- Error occurred in deployment step 'Add Solution': 此解决方案包含面向全局程序集缓存的一个或多个程序集。您应该为将保存在全局程序集缓存中的任何程序集使用
- iis部署提示“未能加载文件或程序集'**'或它的某一个依赖项。试图加载格式不正确的程序”
- 《Orange's 一个操作系统的实现》学习笔记--特权级代码段之间的转移(二)
- 从数据库表Orders中计算出一个新的编号,格式为'B'+当前日期+新编号(Cyyyymmdd000)
- 一个样本的Student's t-test
- oracle模糊查询含有通配符'%','_'的写法
- 简单的问题,用类创建一个对象error C2380: type(s) preceding 'Complex' (constructor with return type, or illegal redefinition of current class-n