ibaobei 发表于 2017-5-19 08:08:29

神奇的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/
页: [1]
查看完整版本: 神奇的Perl-正则表达式(8)