◀一般トップへ
  • 3620 正規表現が正しく処理されない?
    • 3628 Re: 正規表現が正しく処理されない?
  • [3620] 正規表現が正しく処理されない? としみ 2004年02月01日 18:57

    はじめまして。
    旧テキストエディタの頃から愛用させていただいております。

    正規表現が正しく処理されない場合があるようなんですが、そういう事はあるでしょうか?

    あるファイルをTeraTremのマクロにしようと思いまして、以下の置換を実行しようと思いました。

    置換前 (.+)
    置換後 sendln '$1'

    しかし結果は

    sendln '$1(cr)
    '(lf)

    となってしまいます。

    同じ正規表現ライブラリを使った他のエディタでは正しく置換されるので、
    サクラエディタのバグではないでしょうか?

    よろしくお願いします。
    • [3628] Re: 正規表現が正しく処理されない? もか 2004年02月05日 23:23

      こんばんは
      >正規表現が正しく処理されない場合があるようなんですが、そういう事はあるでしょうか?
      正しく動作しないことは多々あります。
      特に、行頭、行末、改行周りは文化の違いを含め複雑な問題を抱えています。
      >置換前 (.+)
      >置換後 sendln '$1'
      >同じ正規表現ライブラリを使った他のエディタでは正しく置換されるので、
      >サクラエディタのバグではないでしょうか?
      サクラエディタでは、行にCR自体が実際に存在していて、
      .にCRが含まれるためにこんな動作になります。
      .は使わないで、[^\r\n]を使えばそれっぽく動きます。
      とりあえずPerlの正規表現の仕様(Unix的にCRは改行ではない)ということにしたいところですが、
      複数行をまじめにサポートするようになるとバグといえるかも。

      とりあえず、こんな風に書くことで代替できます。
      >置換前 [^\r\n]+
      >置換後 sendln '$&'
      #他のどのエディタでしょうか,きになるなぁ