web-dev-qa-db-ja.com

Perl正規表現からのキャプチャを個別の変数に保存するにはどうすればよいですか?

正規表現があります:

/abc(def)ghi(jkl)mno(pqr)/igs

各括弧の結果を、括弧ごとに1つずつ、3つの異なる変数にキャプチャするにはどうすればよいですか?現在、1つの配列を使用してすべての結果をキャプチャしています。結果は順番に表示されますが、解析する必要があり、リストが膨大になる可能性があります。

@results = ($string =~ /abc(def)ghi(jkl)mno(pqr)/igs);
18
Incognito

あなたの質問は私には少し曖昧ですが、私はあなたがこのようなことをしたいと思います:

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;
}
16
Leon Timmermans

それぞれ特定のグループに焦点を当てた3つの異なる正規表現を持つことができます。明らかに、正規表現内の異なる配列に異なるグループを割り当てるだけですが、唯一の選択肢は正規表現を分割することだと思います。

0
joejoeson