突っ込み希望します-稚拙マクロNo.09469
石田 さん 21/06/22 16:50
 
秀丸掲示板で初めて知った「特殊空白」を利用して
和欧文混植 四分空きマクロのアルファ版を作って見ました。
マクロ素人さんですので、突っ込みを希望します。
マクロ実行結果を画像で紹介します。マクロソースは次ページで掲載します。
5、6、7、8行目の閉じパーレン ) に空白がないのは意図的なものです。
http://neo.vc/uploader/src/neo64198.png

[ ]
RE:09469 突っ込み希望します-稚拙マクロNo.09470
石田 さん 21/06/22 16:54
 
title "――― ●和英混植 四分空きマクロ アルファ版";
setcompatiblemode 0x20000;
replaceallquick "[a-zA-Z][a-zA-Z\\d\\.\\,\\[\\(\\)\\(\\)\\#\\【\\&\\】\\~\
\?\\|\\@\\「\\_\\」\\:\\// \\t'-\\]]+" , "\u2009\\0\u2009" , regular ;
replaceallquick "\\([\u2009]", "\\(" , regular ;
replaceallquick "\\)[\u2009]", "\\)" , regular ;
replaceallquick "\\([\u2009]", "\\(" , regular ;
replaceallquick "\\)[\u2009]", "\\)" , regular ;
replaceallquick "\\[[\u2009]", "\\[" , regular ;
replaceallquick "\\][\u2009]", "\\]" , regular ;
replaceallquick "「[\u2009]", "「" , regular ;
replaceallquick "[\u2009]」", "」" , regular ;
replaceallquick "」[\u2009]", "」" , regular ;
replaceallquick "『[\u2009]", "『" , regular ;
replaceallquick "[\u2009]』", "』" , regular ;
replaceallquick "』[\u2009]", "』" , regular ;
replaceallquick "“[\u2009]", "“" , regular ;
replaceallquick "[\u2009]”", "”" , regular ;
replaceallquick "[\u2009]", "" , regular ;
replaceallquick "[\u2009]", "" , regular ;
replaceallquick "【[\u2009]", "【" , regular ;
replaceallquick "[\u2009]】", "】" , regular ;
replaceallquick "】[\u2009]", "】" , regular ;
replaceallquick "[\u2009]]", "]" , regular ;
replaceallquick "][\u2009]", "]" , regular ;
replaceallquick "<[\u2009]", "<" , regular ;
replaceallquick "[\u2009]>", ">" , regular ;
replaceallquick "[\u2009]=", "=" , regular ;
replaceallquick "[\u2009]=", "=" , regular ;
replaceallquick " [\u2009]","" , regular ;
replaceallquick "  "," " , regular ;
replaceallquick "   "," " , regular ;
replaceallquick "  "," " , regular ;
replaceallquick "  "," " , regular ;
replaceallquick "\\& ","\\&" , regular ;
replaceallquick " \\&","\\&" , regular ;
replaceallquick " $","" , regular ;
replaceallquick "^[\u2009]", "" , regular ;

[ ]
RE:09470 突っ込み希望します-稚拙マクロNo.09471
秀丸担当 さん 21/06/23 09:21
 

拝見させていただいたところ、おそらくですが最初の正規表現の長い[]の中の、最後
のほうの'-\\]のところが違っているかもしれないです。
これだと文字コード0x27(')から0x5D(])の範囲という意味なので、' と - と ] の3
文字の場合は['\-\]]という書き方になります。マクロの文字列にすると"['\\-\\]]"
または@"['\-\]]"になります。

他は書き方を最適にしたほうがいいとかありますが、動作上の問題は無いのではない
かと思います。
しいて突っ込むとしたら、マクロの文字列を@""の書き方にすると、\のエスケープを
しなくてもいいので見やすくなり、問題点も見つけやすくなると思います。
最初の長い正規表現は以下のようになります。
@"[a-zA-Z][a-zA-Z\d\.\,\[\(\)\(\)\#\【\&\】\~\?\|\@\「\_\」\:\// \t'\-\]]+"

[]の中で\エスケープするのは ] - \ の3文字と、先頭の ^ くらいで、他のパーレ
ン等の普段意味を持つメタキャラクタは必要無いので、以下のようにするといいです。
@"[a-zA-Z][a-zA-Z\d.,[()()#【&】~?|@「_」:/ \t'\-\]]+"

ここで@""の書き方を紹介しておきながら真逆のことなのですが、置換文字列のほう
は、今回の"\u2009\\0\u2009"のように"\u2009"を含む場合については、@""を使わな
いほうがいいです。
"\u2009"は、正規表現ではなく、マクロの文字列として特殊空白になるためです。

2番目の置換の検索文字列の"\\([\u2009]"の場合は、@""の書き方でない場合は、"\
u2009"が正規表現ではなく特殊空白そのものなので、[]は付けなくてもよくて、"\\
(\u2009"でもできると思います。
@""の書き方にして、@"\([\u2009]"とすると、文字列そのものなので、これは正規表
現として渡され、[]を付ける意味があります。
動作上は違いが無いのでどちらでもいいです。

以下の書き方は、まとめて1つにしてもいいと思います。
replaceallquick "\\([\u2009]", "\\(" , regular ;
replaceallquick "\\)[\u2009]", "\\)" , regular ;
replaceallquick "\\([\u2009]", "\\(" , regular ;
replaceallquick "\\)[\u2009]", "\\)" , regular ;
replaceallquick "\\[[\u2009]", "\\[" , regular ;
replaceallquick "\\][\u2009]", "\\]" , regular ;
replaceallquick "「[\u2009]", "「" , regular ;
これをまとめて以下のようにすると一度で済みます。
replaceallquick @"([()()[\]「])[\u2009]", @"\1" , regular ;
これも動作はするのでどちらもでいいです。

[ ]
RE:09471 突っ込み希望します-稚拙マクロNo.09472
石田 さん 21/06/24 20:20
 
>ここで@""の書き方を紹介しておきながら真逆のことなのですが、置換文字列のほう
>は、今回の"\u2009\\0\u2009"
>のように"\u2009"を含む場合については、@""を使わないほうがいいです。
>"\u2009"は、正規表現ではなく、マクロの文字列として特殊空白になるためです。

 秀丸担当さんの思わぬ助言に感謝します。@付きマクロは便利≠ニいう話は聞い
たことはありますが、
初心者には敷居が高いと思い敬遠してきましたが、勇気をもって挑戦しました。
教えてもらった二行を改修しただけで、下の方の細々した部分はまだ取りかかったば
かりですが、
以前作っておいた「マクロ動作検証用テキスト」で今回の @付きマクロ を走らせた
ら、全く同じ動きを
したのが嬉しいです。
URLやメールアドレスが途中で割れることもなく、両端に空白が出来るのも一緒でした。

 ご指摘のあった \u2009\\0\u2009 の部分は @"\0" として、\0 の両端に透明空白
を直接貼り付けました。
邪道かも知れませんが、秀丸からはエラーメッセージも出ないのでこれでいいのか
な? と勝手に思っています。

(@付きマクロと特殊空白は両立できないのでしょうか?)

[ ]
RE:09472 突っ込み希望します-稚拙マクロNo.09475
秀丸担当 さん 21/06/25 13:41
 

マクロファイルをUTF-16やUTF-8(BOMあり)で保存すればそのまま保存できて実行もで
きるので、見分けが付かなくてもよければ、それでいいと思います。
"\u2009"を書くと強調表示しなくても見分けが付くので、@""の書き方も合わせて使
うとしたら、"\u2009" + @"\0" + "\u2009" といった感じで + で繋げるという方法
も考えられます。

[ ]
RE:09475 突っ込み希望します-稚拙マクロNo.09481
石田 さん 21/06/27 10:59
 
秀丸担当さん、本当に有り難うございました。
@付きマクロは便利≠ニは昔から聞いていましたが、
自分にはハードルが高いと避けてました。今回の初めての挑戦で勉強になりました。

[ ]