◀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文字にもマッチしたと考えてください。