◀ANSI版開発トップへ
  • 1328 正規表現置換の振舞いが変わっています
    • 1333 Re:正規表現置換の振舞いが変わっています
      • 1439 Re:正規表現置換の振舞い
        • 1440 Re2:正規表現置換の振舞い
          • 1443 Re2:正規表現置換の振舞い
            • 1444 Re3:正規表現置換の振舞い
              • 1445 Re4:正規表現置換の振舞い
          • 1446 Re2:正規表現置換の振舞い
  • [1328] 正規表現置換の振舞いが変わっています げんた 2002年01月25日 20:24

    最終リリースから正規表現置換における改行コードの扱いが変わっています.おそらくnoviceさんの変更が効いているのだと思いますが.

    以前は
    * /^TEXT.*$/ では改行は含まれない
    * /^TEXT.*\n$/ では改行が含まれる
    で,改行が含まれるパターンを指定することで行削除を行うことができたのですが,

    現在は
    * /^TEXT.*$/ では改行は含まれない(同じ)
    * /^TEXT.*\n$/ では全体がHITしてしまう? + 置換が永遠に終わらない
    みたいです.

    置換で複数行を一括して扱っているのが問題なのかなと思います.複数行を含んだ文字列を扱うときはmオプションが必要なのでは?
    • [1333] Re:正規表現置換の振舞いが変わっています novice 2002年01月26日 02:33

      ▼ げんたさん
      > 最終リリースから正規表現置換における改行コードの扱いが変わっています.おそらくnoviceさんの変更が効いているのだと思いますが.
      私が2002/01/19に追加したコードのGetSelectedData()の引数の設定が間違っていました。

      変更前
      if( FALSE == pcEditView->GetSelectedData( cmemory, FALSE, NULL, FALSE, EOL_NONE ) ){

      変更後
      if( FALSE == pcEditView->GetSelectedData( cmemory, FALSE, NULL, FALSE ) ){

      ご確認お願い致します。
      • [1439] Re:正規表現置換の振舞い げんた 2002年02月01日 14:24

        >私が2002/01/19に追加したコードのGetSelectedData()の引数の設定が間違っていました。
        >ご確認お願い致します。
        行全体を(改行を含めて)空文字列に置換=行削除するとNULL Pointerを参照して死にます.
        置換先に何かしら文字がある場合は大丈夫です.
        • [1440] Re2:正規表現置換の振舞い hor 2002年02月01日 15:42

          ▼ げんたさん
          > >私が2002/01/19に追加したコードのGetSelectedData()の引数の設定が間違っていました。
          > >ご確認お願い致します。
          > 行全体を(改行を含めて)空文字列に置換=行削除するとNULL Pointerを参照して死にます.
          > 置換先に何かしら文字がある場合は大丈夫です.

          ..*\n$ でやってみたら削除できましたけど…???
          • [1443] Re2:正規表現置換の振舞い げんた 2002年02月01日 20:56

            ▼horさん
            >..*\n$ でやってみたら削除できましたけど…???
            申し訳ない.

            正規表現置換に関してはnoviceさんの方を削除してHORさんのルーチンを使っていますので,その差が出ているのかも.
            もう少し調べてみます.
            • [1444] Re3:正規表現置換の振舞い hor 2002年02月01日 21:08

              ▼ げんたさん
              > ▼horさん
              > >..*\n$ でやってみたら削除できましたけど…???
              > 申し訳ない.
              >
              > 正規表現置換に関してはnoviceさんの方を削除してHORさんのルーチンを使っていますので,その差が出ているのかも.

              私もnoviceさんのロジックはまだ使ってないです。
              …ダイアログから大文字小文字のオプションを正規表現に埋め込んだりしてたのでだいぶ違うソースになってるかも…
              • [1445] Re4:正規表現置換の振舞い hor 2002年02月01日 21:52

                ▼ horさん
                > ▼ げんたさん
                > > 正規表現置換に関してはnoviceさんの方を削除してHORさんのルーチンを使っていますので,その差が出ているのかも.
                >
                > 私もnoviceさんのロジックはまだ使ってないです。
                > …ダイアログから大文字小文字のオプションを正規表現に埋め込んだりしてたのでだいぶ違うソースになってるかも…

                一応、私が正規表現置換の動作を確認したソースを Junk/etc.lzh に置いておきます。

                ↓見る・ぱくる・無視する・ちょっと使う……ご自由に。
                ssrc_2002-01-27.zip
                + srcdiff_2002-01-27_p4.zip
                + 正規表現iオプションをダイアログで指定可能に
                + 行末より後ろにキャレットがある状態で正規表現下検索すると変だったのを修正
                + 検索後のメッセージをステータスバーに表示、を、またはメニューバーに表示する、に変更
                + スペルミス修正(CEditView::SendStatusMassage→CEditView::SendStatusMessage)
                + アウトライン解析/ブックマーク一覧でジャンプしたら文書の方をアクティブにする
                + アウトライン解析/ブックマーク一覧のリスト(ツリー)がアクティブなら、
                再描画,アウトライン解析,ブックマーク一覧,ブックマーク設定/解除キーを使えるように変更
          • [1446] Re2:正規表現置換の振舞い げんた 2002年02月01日 22:27

            >..*\n$ でやってみたら削除できましたけど…???
            よく見たら自分で何気なく変えたところだった.
            本当に申し訳ない.
            今は普通に動いています.

            ただ,BREGEXPのせいなのか,^.*$ には先頭から改行コード \r\n の\rの部分までがヒットして\nが残ります.
            ^.*\n$ だと行全体にヒット.