◀ANSI版開発トップへ
  • 2771 置換対象
    • 2799 選択終点追加
      • 2801 Re:選択終点追加
        • 2870 Re2:選択終点追加
          • 2873 Re3:選択終点追加
            • 2875 Re4:選択終点追加
              • 2882 Re5:選択終点追加
            • 2878 Re4:選択終点追加
              • 2879 Re5:選択終点追加
                • 2880 Re6:選択終点追加
                  • 2881 Re7:選択終点追加
  • [2771] 置換対象 蒔田 信幸 2003年05月18日 08:12

    Ver. 1.3.9.1
    例えば、HTMLファイルの編集で選択終点追加を行った場合です。

    置換前 >
    置換後 aaa
    正規表現 チェック
    置換対象 選択終点追加
    範囲 ファイル全体
    実行 置換ボタン,置換ボタン,置換ボタン,...

    置換後文字列の後に、常にCR+LFが入ってしまいます。
    選択始点挿入と、正規表現にチェックがない場合は、問題ありません。

    <対処方法>
    [2001] RE: 置換について
    ▽ 2002/6/10 (月) 22:48:17 みく
    data&ol=200206#2001

    実行が「すべて置換」では別に、結果的に何も行わないという問題があります。
    • [2799] 選択終点追加 蒔田 信幸 2003年05月24日 11:13

      再度の報告になります。
      Ver. 1.3.9.1 test_20030522

      テストパターン
      ------
      aabb
      bbaa
      ------
      選択対象 選択終点追加
      正規表現 チェック
      実行 すべて置換(置換の場合も)

      置換前 「a」
      置換後 「X」
      置換結果
      -------
      aXaXbb
      bbaXaX
      -------

      置換前 「b」
      置換後 「X」
      置換結果
      -------
      aabb
      Xbbaa
      X-------

      検索文字に最初にマッチした文字が行末の場合、改行の後に文字が追加されるようです。
      改行文字は、CF+LFとLF+CRの場合が問題で、CRのみとLFのみの場合は問題ありません。
      • [2801] Re:選択終点追加 かろと 2003年05月24日 17:19

        ▼ 蒔田 信幸さん
        > 再度の報告になります。
        > Ver. 1.3.9.1 test_20030522
        > 検索文字に最初にマッチした文字が行末の場合、改行の後に文字が追加されるようです。
        > 改行文字は、CF+LFとLF+CRの場合が問題で、CRのみとLFのみの場合は問題ありません。

        言われている例の通りにならなかったですが、なんだか直感に合わない動きをするのは理解しました。
        理由はわかりませんが、ソース上も終点追加の時は、改行のところで特殊な処理が入ってます。
        この辺りを修正する必要がありそうですが、私自身まだ「始点挿入」「終点追加」のところを
        理解しきれていないので、ちょっと時間をください。

        • [2870] Re2:選択終点追加 蒔田 信幸 2003年06月19日 23:08

          ▼ かろとさん

          V sakura_test_20030618
          試してみましたので、ご報告致します。

          個人的な希望としては、何れかの改行コードで
          ------
          from aa-rn to aa-rn[CR+LF]
          ------
          と1行になって欲しいのですが。

          1.cr+lfの場合
          ------
          aa-rn[CR+LF]
          ------
          置換前「[^\r]*」 置換後「from $& to $&」
          1.の結果
          ------
          from aa-rn to aa-rnfrom to [CR+LF]
          ------
          置換対象●選択文字 ■正規表現 範囲●ファイル全体 「すべて置換」で実行

          ヘルプには次のように有ります。
          <B>「正規表現の注意」</B>
          サクラエディタで改行を検索する場合は、
          <B>\r  キャリッジリターン</B>
          で検索して下さい。

          しかし「.」には、(\r)は含まれて、(\n)は含まれない様子です。
          <B>\n  ラインフィード</B>
          の間違いではないでしょうか?

          では、お元気で。
          • [2873] Re3:選択終点追加 かろと 2003年06月20日 00:47

            >置換前「[^\r]*」 置換後「from $& to $&」
            >from aa-rn to aa-rnfrom to [CR+LF]

            「[^\r]*」が、0文字にマッチするので、
            aa-rn と、次の0文字にマッチした結果とみれば、置換結果はそれなりだと思います。

            >from aa-rn to aa-rn[CR+LF]
            >と1行になって欲しいのですが。

            0文字にマッチしないように検索しないと・・・あかんように思います。


            >しかし「.」には、(\r)は含まれて、(\n)は含まれない様子です。

            ん?「.」は、\rが含まれて、\nが含まれないのは合っているのでは?

            ><B>\n  ラインフィード</B>
            >の間違いではないでしょうか?

            \rと書かれているのは、ヘルプが更新されていないからだと思いますが、
            \n で検索してもだめですので、それも間違いです。
            現在のサクラの改行コードは、\r\n, \r, \n 等がありだからです。

            私も知らないのですが、昔のサクラは \r が改行コードだったようです。
            ヘルプの「改行コードについて」のところに、
            【アンドゥ・リドゥバッファへの改行コード格納形式
            前バージョンは改行コードを\rで表現していた。
            新バージョンはCRLFやLFCR等をそのまま格納する。】
            という記述があります。
            • [2875] Re4:選択終点追加 すい 2003年06月20日 01:03

              >><B>\n  ラインフィード</B>
              >>の間違いではないでしょうか?
              >
              >\rと書かれているのは、ヘルプが更新されていないからだと思いますが、
              >\n で検索してもだめですので、それも間違いです。
              >現在のサクラの改行コードは、\r\n, \r, \n 等がありだからです。
              >
              >私も知らないのですが、昔のサクラは \r が改行コードだったようです。

              これはですねえ、昔はこのエディタは正規表現の処理を JRE32.DLL で
              やっていて、その時の動作の記述です。
              正規表現ライブラリが BREGEXP.DLL になってから \r と \n に分かれた
              今の仕様になりました。

              で、ヘルプは全くといって良いほど内容が更新されていないので、昔の記述が
              残ったままになっているのです。特に検索がらみの正規表現に関する所は
              他もあちこち、殆どすべての箇所が JRE32.DLL の記述のままになっています。
              # JRE32.DLL に関する機能の説明をしている所で、ところどころに BREGEXP.DLL
              # という名前が登場しているような感じです。
              ですので、内容見てもあまり役にたたないです。
              • [2882] Re5:選択終点追加 蒔田 信幸 2003年06月22日 13:27

                ▼ すいさん
                ▼ かろとさん
                ありがとうございます。いろいろ参考になりました。
                -------
                aa-n[LF]
                -------
                「^.*」→「from $& to $&」の置換で、
                -------
                from aa-n to aa-n[LF]
                -------
                で終わらせたいと思います。
            • [2878] Re4:選択終点追加 蒔田 信幸 2003年06月21日 02:22

              ▼ かろとさん
              > 「[^\r]*」が、0文字にマッチするので、
              > aa-rn と、次の0文字にマッチした結果とみれば、置換結果はそれなりだと思います。

              早速のご返答感謝致します。
              参考になりましたので、答えが解りました。

              1.「[^\r]*」→「from $& to $&」
              2.「from to $」→「」
              の二段階でうまく行きました。

              いつも開発、ご苦労様です。
              やっと、ここまで出来るようになったと思います。
              • [2879] Re5:選択終点追加 かろと 2003年06月21日 07:31

                >1.「[^\r]*」→「from $& to $&」
                >2.「from to $」→「」
                >の二段階でうまく行きました。

                この例を見ると、
                * でなく、 + なら1段階になりそうな気がします。(^^;
                • [2880] Re6:選択終点追加 蒔田 信幸 2003年06月22日 02:49

                  ▼ かろとさん
                  > >1.「[^\r]*」→「from $& to $&」
                  > >2.「from to $」→「」
                  > >の二段階でうまく行きました。
                  >
                  > この例を見ると、
                  > * でなく、 + なら1段階になりそうな気がします。(^^;

                  「^[^\r]*」→「from $& to $&」で、1段階でもうまく行きました。 ☆三

                  処で、検索文字の「.」は、現状の「[^\n]」と同じではなく、「[^\r\n]」と同じではないかと思いますが。
                  例えば、
                  ---------
                  aa[CR+LF] が、
                  ---------
                  「[^\r\n]*」→「from $& to $&」の置換で、
                  ---------
                  from aa to aafrom to [CR+LF]
                  ---------
                  となるのはどうしてでしょうか。(バグ?)
                  • [2881] Re7:選択終点追加 かろと 2003年06月22日 03:10

                    >処で、検索文字の「.」は、現状の「[^\n]」と同じではなく、「[^\r\n]」と同じではないかと思いますが。

                    残念ながら、「.」の定義は、BREGEXP.DLLで決まっているので、[^\n]としかならんのです。


                    >---------
                    >「[^\r\n]*」→「from $& to $&」の置換で、
                    >---------
                    >from aa to aafrom to [CR+LF]
                    >---------
                    >となるのはどうしてでしょうか。(バグ?)

                    バグではありません。
                    前のレスの繰り返しになりますが、* は0文字以上にマッチですので、[CR+LF]前の0文字にもマッチしたと考えてください。