欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

神奇的Perl-正则表达式(8)

程序员文章站 2022-04-29 13:54:19
...

声明:本神奇的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/