|
えるさん、御指摘ありがとうございました。
> >replaceallfast "x*", "abc", ta;
>
> 検索/置換系の関数に ta というオプションはないのでこれはマクロの文法エラーに
> なると思います。
これは
> >replaceallfast "x*", "abc", regular;
の間違いです。
修正して再度まとめます。
==========ココカラ==================================================
置換の動作に関しましては、その後調査してみましたところ以下のようなことがわ
かりました。
(例1)
------------------------------------------------------
あいうえお[EOF]
------------------------------------------------------
この1行のみのファイルで
replaceallfast "x*", "abc", regular;
を実行しても何もおきない。
(例2)
------------------------------------------------------
あいうえお↓
[EOF]
------------------------------------------------------
改行(↓で示した)を含めた2行のファイルで同じく
replaceallfast "x*", "abc", regular;
を実行すると、「改行の前」にマッチしたらしく、「あいうえお」と
改行の間に無限にabcが挿入され続けた。
(例3)
------------------------------------------------------
xyzあいうえお[EOF]
------------------------------------------------------
この1行のみのファイルで
replaceallfast "x*", "abc", regular;
を実行するとファイル先頭に無限にabcが挿入され続けた。
"x*"が"xの0回以上の繰り返し"という意味であるならば、3つの
例ともファイル先頭にマッチするのではと予想していたのですが
そうではありませんでした。
結果をまとめますと
●2バイト文字と[EOF]のみのファイルでは全くマッチしない
●「1バイト文字の前」にマッチするらしい
となっています。
これらの動作を考察してみますと、"xの0回以上の繰り返し"
という場合も「x」に当てはまる1バイト文字が有ってはじめて
マッチ対象となる仕様になっているのだと思いました。(例1)と
(例2)から「2バイト文字は"x*"の対象にならない」と思えますし、
(例2)と(例3)においては「改行」と「x」の【前】がマッチして
いるようであるからです。
いずれにしましてもJRE32.DLLの仕様に関わる問題であり
秀丸本体とはあまり関係ないことだと思いますが、お礼だけ
を書くのもナニかと思い、調べた結果を書かせて戴きました。
ありがとうございました。失礼致します。
|
|