神奇的Perl-正则表达式(8)
声明:本神奇的Perl系列为刘兴(http://deepfuture.iteye.com/)原创,未经笔者授权,任何人和机构不能转载
2.1 贪婪匹配与最小匹配
1、贪婪匹配试图匹配最长字符串。
例如:
deep and future love deepfuture
/deep.+future/匹配了deep and future love deepfuture
1、最小匹配尽可能匹配最短的字符串,在贪婪量词后加上?表示最小匹配。
例如:
deep and future love deepfuture
/deep.+?future/匹配deep and future
2.2 正则表达式使用变量
语法格式如下:
$模式串变量名=<pattern>; <pattern>为匹配模式串
/$模式串变量名/ 完成$模式串变量存储的模式串的匹配
比如:
#perl4-11.pl
my $pm="wang";
my $name="wangwu" ;
if ($name=~m/$pm/){# $name能匹配 $pm 存储的模式串wang
print "ok" ;
}
输出:
ok
再看一个更复杂的例子,以获取网址之家(www.hao123.com)主页中指定链接为例:
首先用浏览器打开网址之家(www.hao123.com),将主页存在保存在本地硬盘。然后运行以下程序接受用户输入要查询的网站,输出相关链接。
#perl4-10.pl
use strict;
use warnings;
my $myweburl=<STDIN>;#用户输入想查询的网址
chomp($myweburl);
open HAO123,"<hao123--我的上网主页.htm";
foreach my $line(<HAO123>){
chomp($line);
if ($line=~m/href=/){#如果该行含有HTML的链接标记
print $1 if $line=~m/="(.*)">$myweburl<\/A>/i;
#(.*)匹配网址对应的链接
}
}
close HAO123;
我们运行以上程序,输入中华英才网,然后程序输出
上一篇: 神奇的Perl-Perl语法(3)
下一篇: 神奇的Perl-第六个任务(4)
推荐阅读