Не удалось сопоставить регулярное выражение perl

Я хочу сопоставить две разные строки, и вывод должен состоять из $1 и $2, По моему мнению, в этом примере, если $a — это «xy abc», то $1 должен быть «xy abc», а $2 — «abc», но часть «abc» входит в $3. Не могли бы вы помочь мне написать регулярное выражение, в котором $1 должен иметь целую строку, а $2 должен есть вторая часть. Я использую перл 5.8.5.

my @data=('abc xy','xy abc');
foreach my $a ( @data) {
    print "\nPattern= $a\n";
    if($a=~/(abc (xy)|xy (abc))/) {
        print "\nMatch: \$1>$1< \$2>$2< \$3>$3<\n";
    }
}

Вывод:

perl test_reg.pl

Pattern= abc xy

Match: $1>abc xy< $2>xy< $3><

Pattern= xy abc

Match: $1>xy abc< $2>< $3>abc<
5
задан user87005 11 June 2012 в 09:55
поделиться