New RegExp の設定No.09802
おすぎ さん 22/03/31 17:36
 
お世話になっております。

VBS の
Set objRegExp = New RegExp という設定は、
秀丸マクロの COMの呼出しで できるでしょうか?

[ ]
RE:09802 New RegExp の設定No.09803
h-tom さん 22/03/31 21:05
 
h-tom です。

>Set objRegExp = New RegExp という設定は、
>秀丸マクロの COMの呼出しで できるでしょうか?
vbs の RegExp オブジェクトなら使えますよ。

ただ、場合によっては hmjre.dll の関数を使う方が楽だと思いますが。

[ ]
RE:09803 New RegExp の設定No.09805
おすぎ さん 22/04/01 08:50
 
h-tom さん

>vbs の RegExp オブジェクトなら使えますよ。
RegExp オブジェクトの設定の仕方が分かりません。
Set objRegExp = New RegExp は秀丸でどうやって実現するんでしょうか?

[ ]
RE:09805 New RegExp の設定No.09806
秀丸担当 さん 22/04/01 09:18
 
vbsのNewで作るオブジェクトそのものは、秀丸マクロではできないですが、vbsのCre
ateObjectや、jsのnew ActiveXObjectで作るものは、秀丸マクロでできます。

調べてみたら、New RegExpの代わりに、CreateObject("VBScript.RegExp")でオブジ
ェクトを作る方法もあるようでした。
"VBScript.RegExp"であれば、秀丸マクロでも使えることになります。

試しに以下のようにしてみてできました。

$pattern="(abc|123)";
$text="xxxxabcxxxx";

#RegExp = createobject( "VBScript.RegExp" );
setpropstr #RegExp, "Pattern", $pattern;
#Matches = member( #RegExp,"Execute", $text );
#Match = getcollection( #Matches );
message "VBScript.RegExp"
      + "\nヒット位置:" + str(member(#Match,"FirstIndex"))
      + "\nヒット文字列:"+ member(#Match,"Value");
endmacro;

同じことをHmJreでやるとしたら、以下のようになります。

$pattern="(abc|123)";
$text="yy123yyyyy";

loaddll "HmJre.dll";
#n = dllfunc( "FindRegular", $pattern, $text, 0 );
#c = dllfunc( "GetLastMatchLength" );
message "HmJre"
      + "\nヒット位置:" + str(#n)
      + "\nヒット文字列:"+ midstr($text,#n,#c);
endmacro;

[ ]
RE:09806 New RegExp の設定No.09807
おすぎ さん 22/04/01 09:50
 
秀丸担当さま

CreateObject("VBScript.RegExp")が使えると知り、とても助かります。

HmJreのDLLは、処理が遅くなるので見送っていました。

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

[ ]