私は2つの異なる文字列にマッチしたいと思います。$ 1と$ 2、 に来るはずです。この例の私によれば、$ aが 'xy abc'ならば$ 1は 'xy abc' 'abc'は必要ですが、 'abc'の部分は$ 3です。 正規表現を書くのに手伝ってください。$ 1は文字列全体を持ち、$ 2は に2番目の部分があるはずです。 私はperl 5.8.5を使用しています。perl regex matchingが失敗しました
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";
}
}
出力:でも、全体のことをキャプチャしてわざわざなぜ
(?|(abc (xy))|(xy (abc)))
:
perl test_reg.pl
Pattern= abc xy
Match: $1>abc xy< $2>xy< $3><
Pattern= xy abc
Match: $1>xy abc< $2>< $3>abc<
"私は、Perl 5.8.5を使用しています。"それは8歳です。あなたは本当にアップグレードを検討する必要があります。 –