2009年7月22日星期三

[PerlChina] Re: 请教一个正则表达式的问题

多谢各位! 问题解决了

On 7月22日, 下午3时10分, Lee Duhem <lee.du...@gmail.com> wrote:
> 2009/7/22 ken <wangk...@gmail.com>:
>
>
>
>
>
>
>
> > #!/usr/bin/perl
> > use strict;
> > use warnings;
>
> > my $txt1="slot 0/3/0/0/0";
> > my $txt2="slot 0/4/0/0/0";
>
> > my @addrs;
> > foreach($txt1,$txt2)
> > {
> > my @tmp=split ' ';
> > push @addrs,$tmp[1];
> > }
>
> > my $txt3="0/3/0/0/0/0 CLAIMED";
>
> > foreach my $addr (@addrs)
> > {
> > $txt3 =~ /$addr\/0\s+(.*)/;
> > print $1,"\n";
> > }
>
> > 上面这个程序在txt3中匹配0/3/0/0/0和0/4/0/0/0。
> > 程序输出两次CLAIMED,可是第二次明明就不匹配啊,为什么呢
>
> 正因为第二次匹配失败,所以 $1 的值根本就没有变化。你应该写成
>
> if ($txt3 =~ /$addr\0\s+(.*)/) {
> print $1, "\n";
>
> }
>
> 只有在匹配成功后才打印。
>
> lee- 隐藏被引用文字 -
>
> - 显示引用的文字 -
--~--~---------~--~----~------------~-------~--~----~
您收到此信息是由于您订阅了 Google 论坛"PerlChina Mongers 讨论组"论坛。
要在此论坛发帖,请发电子邮件到 perlchina@googlegroups.com
要退订此论坛,请发邮件至 perlchina+unsubscribe@googlegroups.com
更多选项,请通过 http://groups.google.com/group/perlchina?hl=zh-CN 访问该论坛
-~----------~----~----~----~------~----~------~--~---

没有评论: