[ 新規に投稿する ]

マクロ内で正規表現を使って、正規表現パターンに一致する文字を全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のヘルプは、読んだのですが、読み違えていました。
おかげさまで、目的通り、動作させることができました。
[ ]

[ 新規に投稿する ]