HmJre.dll の ReplaceRegular と変換モジNo.08108
titti さん 16/05/16 01:12
 
こんにちは、秀丸ユーザーです。
下記マクロが動作しません。

具体的言うと、検索にヒットはするのですが置換がおかしいです。
もしかして、V8.20 より実装された

「置換の時に、タグ付き正規表現と組み合わせて変換モジュールを
通して置換出来るようにした。」

はマクロから HmJre.dll を呼び出して使う場合には動きませんか?
それとも何か下記マクロに何らかの不備がありますか?
よろしくお願いします。

【テスト環境】
秀丸エディタ:V8.56 32bit edition
OS:Windows XP SP3


// 変数の宣言
$str = "123456abcdef"; // 対象文字列
$find = "[123abc]";   // 検索文字列
$replace = "\\(0,ToHankaku)";  // 置換文字列
$result = "";      // 置換後の文字列

// HmJre.dll をロード
loaddll "HmJre.dll";
if( !result ) {
    message "HmJre.dllのロードに失敗しました。";
    endmacro;
}

// 正規表現パターンのマッチングをして、ヒットしたもの全てを置換
$result = dllfuncstr("ReplaceRegular", $find, $str, 0, $replace, 2);

message "検索文字列:\t" + $find + "\n" +
  "置換文字列:\t" + $replace + "\n" +
  "変換前文字列:\t" + $str + "\n" +
  "変換後文字列:\t" + $result;

// DLL を開放
freedll;

endmacro;


[ ]
RE:08108 HmJre.dll の ReplaceRegular とNo.08109
秀丸担当 さん 16/05/16 17:31
 

置換で「\(0,ToHankaku)」といった書き方ができるのは秀丸エディタ上での編集
についてのみで、HmJre.dllのReplaceRegularの呼び出しなどからはできないで
す。
いったん挿入してからreplace文などでやる方法では"\\(0,ToHankaku)"が使えま
す。
または、挿入せずにやる場合はfilter関数で文字列全部を"ToHankaku"で変換す
ることができます。

[ ]
RE:08109 HmJre.dll の ReplaceRegular とNo.08110
titti さん 16/05/16 19:00
 
秀丸担当様、こんにちは。
titti です。

回答して頂いた内容、了解しました。
いったん挿入するなど他の方法を模索することにします。

ありがとうございました。

[ ]
RE:08110 HmJre.dll の ReplaceRegular とNo.08113
秀まるお2 さん 16/05/18 09:44
 
 HmJre.dllのヘルプの方に、この辺の説明が書いてありませんでした。

 \1〜\9および\g{1}〜\g{15}は使えるけども、変換モジュールを通す方式は
ダメってことで、ReplaceRegularのヘルプに追記させていただきます。

[ ]