0

私は Perl の初心者で、次のようなデータのセクションがあります。

ATOM    2067  N    SER 7  316   -2.78500  -0.14800  -0.01300 N_R    3 0 -0.47000 0   0
ATOM    2068 HN    SER 7  316   -2.51586   0.06218   0.89490 H___A  1 0  0.31000 0   0
ATOM    2069  CA   SER 7  316   -3.57800  -1.36200  -0.28500 C_3    4 0  0.07000 0   0

各行に H_ を含まないデータの行を別のファイルに出力できるようにしたい。正規表現のエラーを特定するのを手伝ってくれませんか。

while (<localBGF>)
{
      $line = $_;
      if ($line =~ /^ATOM\s+\d+\s+(\S+)\s+SER/)
      {

          if ($line !~ /^ATOM\s+\d+\s+(\S+)\s+SER\s+\d\s+\d\s+\d\s+\d\s+\d\s+H_/)
          {
               print BGF $line;
          }

      }
}
4

1 に答える 1

1

行が2番目に一致する最初の正規表現ですでに識別しているので、それを^ATOM\s+\d+\s+(\S+)\s+SER確認するだけです$line !~ /.*H_.*/

于 2013-08-05T18:42:25.327 に答える