0

正規表現置換で末尾の空白を削除するには?

ここにデータ

              __Data__
              Test - results 
              dkdkdkdkdkdkdkdkdkkkdkd
              slsldldldldldldldldldll
              Information
              ddkdkdkeieieieieieieiei
              eieieieieieieieieieieiei
              Test - summary
              dkdkdkdkdkdkdkdkkdkdkdk
              dkdkdkdkdkdkdkdkdkdkdkk

上記のこれらの行を削除したいもの:

              Information
              ddkdkdkeieieieieieieiei
              eieieieieieieieieieieiei

正規表現を使用した私の試み

           $/ = "__Data__";

           $_ =~ s/^(Test.*[^\n]+)\n(Information.*[^\n]+)\n(Test.*Summary[^\n]+)/$1$3/ms;
              print $_

データの入力は出力と同じです。というか、何も変わらない。

4

2 に答える 2

1

なぜこれではないのですか:

while (<DATA>) {
    if ( m/^Information/..m/^Test/ ) {
        next unless m/^Test/;
    }
    s{\s+$}{};
    print "$_\n";
}
于 2012-05-16T18:40:29.363 に答える
0

情報セクションの使用を削除する場合

$s =~ s/Information.*Test/Test/s;

$s に指定したデータが含まれている場合、次が返されます

Test - results 
dkdkdkdkdkdkdkdkdkkkdkd
slsldldldldldldldldldll
Test - summary
dkdkdkdkdkdkdkdkkdkdkdk
dkdkdkdkdkdkdkdkdkdkdkk

情報のみが必要な場合は、使用してください

$s =~ s/(.*?)(Information.*?)(Test.*)/$2/s;

どちらの場合も、置換の末尾にある「s」に注意してください。このフラグにより​​、複数の行を処理できます。

于 2012-05-16T20:03:43.850 に答える