マクロ内で正規表現を使って、正規表現パNo.08620
kuke さん 18/01/17 20:04
 
マクロ内で正規表現を使って、正規表現パターンに一致する文字を全て置換したいと
考えています。

下記のコードでは、最初の一致のみが置換され、残りの部分は置換されません。
全て置換するには、どのように記述すればいいのでしょうか?

// ---------------------------------------------------------------

// マクロ内で、正規表現を使って置換する

 $TargetFile = @"MyWebSite\WebDesign\css\style.css";

loaddll "hmJre.dll";
$s = dllfuncstr( "ReplaceRegular", "\\", $TargetFile, 1, "/" );
message $s;

// ---------------------------------------------------------------

実行結果

MyWebSite/WebDesign\css\style.css

期待する結果

MyWebSite/WebDesign/css/style.css

秀丸エディタのバージョン 64bit 8.77
マクロの文字エンコードUTF-8

[ ]
RE:08620 マクロ内で正規表現を使って、正No.08621
h-tom さん 18/01/17 20:44
 

h-tom です。

>下記のコードでは、最初の一致のみが置換され、残りの部分は置換されません。
>全て置換するには、どのように記述すればいいのでしょうか?

マクロからのdllfunc呼び出し(Ver5.00対応版)
http://hidemaruo.mydns.jp:81/helpsite/hmjre/html/0008_API_MACRO.html

ReplaceRegular, ReplaceRegularNoCaseSense関数の、第5パラメータを
指定してください。省略しているので、0と見なされています。

あと、第1パラメータは正規表現パターンなので、"\\" ではなく、
"\\\\" or @"\\" と書くべきかな?
(1文字だけなので、現状では問題ないですが。)

[ ]
RE:08620 マクロ内で正規表現を使って、正No.08622
Iranoan さん 18/01/17 20:49
 
kukeさん今日は、Iranoan です
> 下記のコードでは、最初の一致のみが置換され、残りの部分は置換されません。
> 全て置換するには、どのように記述すればいいのでしょうか?
HmJreのヘルプに記載があると思います
> $s = dllfuncstr( "ReplaceRegular", "\\", $TargetFile, 1, "/" );
$s = dllfuncstr( "ReplaceRegular", "\\\\", $TargetFile, 1, "/", 1 );
と第5パラメータを指定してください

[ ]
RE:08621 マクロ内で正規表現を使って、正No.08623
kuke さん 18/01/17 23:14
 
h-tomさん、Iranoanさん

ご指摘、ありがとうございます。

HmJreのヘルプは、読んだのですが、読み違えていました。
おかげさまで、目的通り、動作させることができました。

[ ]