|
h-tom 様,PineCone 様
ご回答ありがとうございました.先に PineCone 様からのご回答を使いながら進めさ
せて頂きます.
>「\」は、特殊な文字(エスケープキャラクタ)なので、
>マクロ中では「\\」と記述する必要があります。
>一度、ご確認ください。
教えて頂いたページ,および公式マニュアル 171 ページなどを見まして,マクロ中
の文字列として「"」「'」「\」を用いる場合,「\"」「\'」「\\」と書かねばなら
ない,ということが分かりました.
ということは,先に私が質問した中のマクロについて,
searchdown2 "MYOJI\\)\\nmyoji@usodomain\\.uso\\.jpjp$", casesense, regular;
と直せばいいわけですね.
さて,このようにしたら確かに期待通りの動き(エラーが出ても送信されてしまうの
は問題ですが,検索には引っかかりました)をしたのですが,まだ一部,理屈として
混乱しているところがあります.もしお分かりになりましたら,お教え下さい.
混乱しているのは「改行」と「タブ」です.ニュアンスを正確に伝えることが難しい
のですが,先例において「\)」は,正規表現中に「)」を用いる場合は前に「\」をつ
けてエスケープしなければならない.マクロ中では「\」を「\\」としなければなら
ないので,結果として「\\)」になる.と理解したのです.
しかし,正規表現において改行は最初から「\n」で1文字扱いです.「n」を表すため
に「\」でエスケープするというわけではありません.一方,教えて頂いたページに
も『マクロで改行文字を記述するには「\n」を使います』と書いてあります.すると,
この「\」は「\\」にしなくてもいいのではないかとも思い,
searchdown2 "MYOJI\\)\nmyoji@usodomain\\.uso\\.jpjp$", casesense, regular;
も試してみたのです.そうしたら,これもきちんと検索したのです.
h-tom 様に教えて頂いた方法で試してみたところ,
message "MYOJI\\)\\nmyoji@usodomain\\.uso\\.jpjp$";
のアウトプットは1行で,
MYOJI\)\nmyoji@usodomain\.uso\.jpjp$
一方,
message "MYOJI\\)\nmyoji@usodomain\\.uso\\.jpjp$";
のアウトプットは2行で,
MYOJI\)
myoji@usodomain\.uso\.jpjp$
つまり,前者は正規表現
MYOJI\)\nmyoji@usodomain\.uso\.jpjp$
を探し,後者は正規表現込みの2行
MYOJI\)
myoji@usodomain\.uso\.jpjp$
を探すということになるのでしょう.
秀丸メールのマクロとして,どちらの方が安全ということはあるのでしょうか.
どちらでもいいとなれば,マクロ中の「"」で囲む中に用いる正規表現においては
「\」を「\\」と書く,と機械的に覚えてよさそうに思っております.
何か参考になりそうなことがありましたら,ご教示願えませんでしょうか.よろしく
お願い致します.
|
|