• ベストアンサー

perl 正規表現処理について

perlの正規表現で、Aというファイルの中から、2に マッチしたらマッチした行から}まで、抜き出すというのは どのようにやるのでしょうか? # ファイルAの内容 1 parameter { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz } 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } 3 parameter { ccccccccccccccccccccccccccccccccc ddddddddddddddddddddddddddddddddd } 欲しいデータとしては 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } を取得したいです。 以上宜しくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

対象が $_ にあるとすれば, 範囲演算子 .. を使って print if /^2 parameter/ .. /^\}/; とも書けます.

すると、全ての回答が全文表示されます。

その他の回答 (1)

回答No.1

#!/usr/bin/perl use warnings; use strict; my $filename = shift || 'file_a.txt'; open my $fh, '<', $filename or die "$filename: $!"; my $text; { local $/ = undef; $text = <$fh>; } close $fh or die "$filename: $!"; if ( $text =~ m/(2 parameter {[^{]*})/s ) { print $1, "\n"; } $ cat file_a.txt 1 parameter { xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz } 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } 3 parameter { ccccccccccccccccccccccccccccccccc ddddddddddddddddddddddddddddddddd } $ perl foo.pl file_a.txt 2 parameter { aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb } $

すると、全ての回答が全文表示されます。

関連するQ&A