◀一般トップへ
  • 4505 正規表現の置換について(行頭)
    • 4511 RE: 正規表現の置換について(行頭)
      • 4514 Re2: 正規表現の置換について(行頭)
        • 4515 Re3: 正規表現の置換について(行頭)
        • 4522 Re3: 正規表現の置換について(行頭)
      • 4558 Re2: 正規表現の置換について(行頭)
  • [4505] 正規表現の置換について(行頭) f 2005年06月20日 14:59

    いつも大変便利に使わせて頂いております。

    サクラエディタ1.5.3.2にて、下記の置換(正規表現)
    を実行すると、期待と異なる結果になりました。

    【元のテキスト】
    --------------------------------
    ab
    aab
    aaab
    aaaab
    --------------------------------

    【置換】
    置換前「^a」
    置換後「」

    【期待する結果】
    --------------------------------
    b
    ab
    aab
    aaab
    --------------------------------

    【実際の結果】
    --------------------------------
    b
    b
    b
    b
    --------------------------------

    以上、宜しくお願い致します。
    • [4511] RE: 正規表現の置換について(行頭) かろと 2005年06月22日 23:06

      >タイトル: RE: 正規表現の置換について(行頭)
      >発言者: f
      >いつも大変便利に使わせて頂いております。
      >
      >サクラエディタ1.5.3.2にて、下記の置換(正規表現)
      >を実行すると、期待と異なる結果になりました。

      これ、以前から話題にはなっているのですが、
      現状は、残念ながらfさんの期待する結果とならない仕様です。

      世の中のエディタで動作がまちまちなところで、昔のkenjiさんの
      投稿によると、

      >> 全部消える……サクラ, 秀丸(HMJRE&JRE32), Dana, Wz
      >> 先頭1文字だけ消える……sed, ActivePerl, ViVi, WSH5(RegExp.Replace()), BASP21(Replace())

      となっており、行毎にしか編集しないストリームエディタでは、fさんの期待通り、
      スクリーンエディタでは、全部消えてしまうことが多いようです。

      先頭1文字だけ消えるようにするのは、なんだか難しいみたい。だと思ってください。

      私も、fさんの期待する結果になって欲しいと思うのですが・・・
      • [4514] Re2: 正規表現の置換について(行頭) せんば 2005年06月23日 13:00

        ▼ かろとさん
        > >サクラエディタ1.5.3.2にて、下記の置換(正規表現)
        > >を実行すると、期待と異なる結果になりました。
        >
        > これ、以前から話題にはなっているのですが、
        > 現状は、残念ながらfさんの期待する結果とならない仕様です。

        既出かもしれませんが、以下の正規表現だと
        先頭1文字だけ消えました。
        置換前:^a(\w*)
        置換後:$1

        内部処理的に、どういう違いがあるんでしょうね...(^^;

        sakura 1.5.3.2
        Bregexp.dll V1.1 Build 22
        • [4515] Re3: 正規表現の置換について(行頭) f 2005年06月23日 14:20

          かろとさん、せんばさん
          ご回答ありがとうございました。

          過去ログ見てませんでした。
          失礼致しました。
        • [4522] Re3: 正規表現の置換について(行頭) かろと 2005年06月24日 23:46

          >タイトル: Re3: 正規表現の置換について(行頭)
          >発言者: せんば
          >内部処理的に、どういう違いがあるんでしょうね...(^^;

          置換後のキャレット位置に違いがあります。
      • [4558] Re2: 正規表現の置換について(行頭) Thor 2005年07月19日 20:15

        BRegexp.dll自体ではグローバルオプション付きの置換で先頭だけが置換されるので、
        全置換は、単純にBRegexp.dllでグローバル置換を使えばいいのではないでしょうか

        置換対象ですが、置換対象文字列全体は「$&」で呼び出せるので、
        選択始点挿入にしたときは「置換後の文字列+$&」
        選択終点追加にしたときは「$&+置換後の文字列」
        とすれば、一つ一つ文字列を切り分けてから置換せずとも、
        一行全体を全置換できると思うのですが

        Jmeditor2では、BRegexp.dllで普通にグローバル置換をしているようで、
        先頭文字だけが置換されます。
        おなじく、K2Editorでも、先頭文字だけが置換されます。


        正規表現エンジンがない場合のときとか、プログラムの都合とか
        よく分かってないので、変なこと言ってたらすいません。