|
こんにちは。秀丸ユーザの「でるもんた・いいじま」です。
> 1 copy;//選択中の"第1条"をコピー
> 2 beginclipboardread;
> 3 $a = getclipboard;//文字列型変数に"第1条"を代入
> 4 localgrep "$a",word,nohilight;//条文中から"第1条"にマッチするも
> のを抽出
>
> 4行目を下記のように正規表現と組み合わせるとうまくいきません。
> localgrep "$a(.*)",regular,nohilight;
2点ほど。
まず、正規表現の例で、少なくともこの投稿では括弧が全角になっています。
確実に半角にしてください。
全角か半角かを見分けるには、たとえば下記のような方法があります。
1) 1文字だけ選択すれば、反転色の部分のサイズで判読できます。
2) ステータスバーに文字コードを表示する設定にしておけば、
全角と半角とで別々の値が表示されます。
#メニューバーから「動作環境」→「ウィンドウ」の枝
#→ステータスバーの「詳細」→「カーソル位置の文字コード」
マクロファイルの文字コードとしてはShift_JIS、UTF-16(要BOM)、
UTF-8(要BOM)が使えますが、いずれの場合でも全角の場合は4桁、
半角の場合は2桁の値が出ます。
3) 全角括弧を、拡張子 .mac の場合の強調表示の対象にしておく
4) そもそも字形の違いで全角・半角を見分けやすいフォントを選ぶ
私は古い人間なのでMS 明朝の9ポイント(12ピクセル@96dpi)
を使っていますが、画面の密度次第ではこのサイズは小さすぎる
かもしれません。
次に、文字列変数の値と文字列定数とを結合するための記法が根本的に
間違っています。ダブルクォートの中に変数名をそのまま埋め込む
方式は秀丸マクロでは使えませんので、Perl流の発想はいったん捨てて
ください。
正しくは、結合したい文字列変数・文字列定数を '+' 演算子でつなぎます。
今でも広く使われている言語だと、JavaScriptあたりがこの方法を採用
していますね。
#Perlだと数値の加算は '+'、文字列の結合は '.' と書き分けますが、
#秀丸マクロの場合は、'+' の左右が数値型の場合は加算、文字列型の
#場合は結合、と自動判別されます。JavaScriptも同様ですが、こちらは
#数値⇔文字列の自動型変換が発動しうるので、必要に応じて parseInt()
#や toString() を使うと理解しています。
あるいは、秀丸でも最近のバージョンでは sprintf() が使えます。
テストコード:
$a = "第1条";
message $a;
message "$a";
message "$a(.*)";
message $a + "(.*)";
#b = 12345;
message sprintf("%s[%d]",$a,#b);
取り急ぎ、こんなところで。
|
|