◀ANSI版開発トップへ
  • 3562 置換による行削除ができなくなった?
    • 3565 Re: 置換による行削除ができなくなった?
      • 3566 Re2: 置換による行削除ができなくなった?
        • 3567 Re3: 置換による行削除ができなくなった?
        • 3569 Re3: 置換による行削除ができなくなった?
  • [3562] 置換による行削除ができなくなった? げんた 2004年05月02日 22:19

    正規表現置換で

    ^hogehoge.*\r$
    で以前は行全体を削除できたはずなのですが,最新版で試すとLFが残っちゃいますね.
    ^hogehoge.*[\r\n]$
    ^hogehoge.*[\r\n]+$
    ^hogehoge.*\r\n

    とか色々試しましたが,全部同じです.
    • [3565] Re: 置換による行削除ができなくなった? もか 2004年05月03日 23:17

      ^hoge.*[\r\n]?
      でできました。複数行にマッチしないのを逆手にとったやり方です。

      $の扱いは,1.3.10.1あたりで変更されているから、その影響でしょう。
      $ → hogehogeで、hogehogeを改行の手前と、EOF直前に挿入できるようにした関係で、
      昔は、$の動作がMulti-Lineな行末(改行コードより後ろの1行の末尾)にマッチしていました。
      今は、動作上は改行コード(\nおよび\r)の直前にマッチしているように振舞う(Single Lineっていうのかな)ってことみたいです。

      ということで、ヘルプの一部記述は現状の動作と違います。(^_^;
      • [3566] Re2: 置換による行削除ができなくなった? もか 2004年05月03日 23:31

        2点訂正します。
        >^hoge.*[\r\n]?
        これだと、\n\rの改行にマッチできませんでした。
        正:^hoge.*[\r\n]*

        >$ → hogehogeで、hogehogeを改行の手前と、EOF直前に挿入できるようにした関係で、
        EOF直前、というか改行コードがない行にはマッチしませんでした。
        誤:hogehogeを改行の手前と、EOF直前に挿入
        正:hogehogeを改行の手前に挿入
        • [3567] Re3: 置換による行削除ができなくなった? もか 2004年05月03日 23:51

          連続投稿、すみません。
          Multi-LineとSingle-Lineという書き方も間違ってたようです。
          昔は、Multi-Lineの改行直前(\n)と行末の両方にマッチしていたはずです。
          今は、改行手前(\rまたは\n)にのみマッチしているような振る舞いになったというのが正しいのかな。
          # なんだか、頭の中がよけい混乱してきました。
        • [3569] Re3: 置換による行削除ができなくなった? じゅうじ 2004年05月06日 02:46

          ▼ もかさん
          ^hogehoge.*[\r\n][\r\n]?
          が、正解だ思うのですが、
          >^hogehoge.*\r\n
          が、駄目なのは、改行がCR+LF以外だったのでは?