如何在一个语句中引用正则表达式匹配?

时间:2011-04-01 22:06:01

标签: regex scope match

我想做这样的事情

if(($Fifo[5]=~/T0int(\S+)/)&&($Fifo[6]=~/T0int(\S+)/)&&($1 ne $2))
{
    <Do something>
}

如何引用两个正则表达式中评估的匹配项?

按$ 1表示在第一个正则表达式中评估匹配,在下一个表示$ 2。

2 个答案:

答案 0 :(得分:2)

my($first)  = $Fifo[5] =~ /T0int(\S+)/;
my($second) = $Fifo[6] =~ /T0int(\S+)/;

if (defined($first) && defined($second) && $first ne $second)) { ⋯ }

或更多骑士:

if (($Fifo[5] =~ /T0int(\S+)/)[0] ne ($Fifo[6] =~ /T0int(\S+)/)[0]) { ⋯ }
或者甚至更加骑士:

if ( (my($first,   $second) = "@Fifo[5,6]" =~ /T0int(\S+)/g ) 
      && $first && $second
      && $first ne $second)
{
    ⋯
}

答案 1 :(得分:0)

尝试这样的事情:

if( ($Fifo[5] =~ (/T0int(\S+)/)) && ($Fifo[6] =~ (/T0int(\S+)/)) && ($1 ne $2) )

基本上在正则表达式周围加上括号,将它们分组为$ 1,$ 2