神奇的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;

我们运行以上程序,输入中华英才网,然后程序输出

http://www.chinahr.com/

你可能感兴趣的:(html,正则表达式,浏览器,perl)