正規表現があります:
/abc(def)ghi(jkl)mno(pqr)/igs
各括弧の結果を、括弧ごとに1つずつ、3つの異なる変数にキャプチャするにはどうすればよいですか?現在、1つの配列を使用してすべての結果をキャプチャしています。結果は順番に表示されますが、解析する必要があり、リストが膨大になる可能性があります。
@results = ($string =~ /abc(def)ghi(jkl)mno(pqr)/igs);
あなたの質問は私には少し曖昧ですが、私はあなたがこのようなことをしたいと思います:
my (@first, @second, @third);
while( my ($first, $second, $third) = $string =~ /abc(def)ghi(jkl)mno(pqr)/igs) {
Push @first, $first;
Push @second, $second;
Push @third, $third;
}
それぞれ特定のグループに焦点を当てた3つの異なる正規表現を持つことができます。明らかに、正規表現内の異なる配列に異なるグループを割り当てるだけですが、唯一の選択肢は正規表現を分割することだと思います。