|
[秀丸マクロヘルプ]>[目次]>[検索系文]>[正規表現について]
[HmJre.dllのヘルプ]>[マクロからのdllfunc呼び出し]>[GetLastMatchTagPosition]
の説明のところにサンプルがあるようです
今回のお題であれば以下のマクロでいけます
$target = "abc<sub>def</sub>ghi"; // 検索する文字列
$pattern = "<sub>(.{1,5})</sub>"; // 正規表現
loaddll "hmjre.dll";
#hitPos = dllfunc("FindRegular", $pattern, $target, 0); // パターンマッチの実行
if(#hitPos == -2) {
message "正規表現の指定に誤りがあります";
}
else if (#hitPos == -1) {
message "正規表現にマッチしません";
}
#hitLen = dllfunc("GetLastMatchLength"); // ヒットした長さ (開始位置の #hitP
os との組で取り出し)
$match = midstr($target, #hitPos, #hitLen);
#capt1Pos = dllfunc("GetLastMatchTagPosition", 1); // 正規表現の ( ) の中を
取り出す仕組み
#capt1Len = dllfunc("GetLastMatchTagLength", 1);
$capture1 = midstr($target, #capt1Pos, #capt1Len);
message sprintf("Hit:[%s] Capt1:[%s]", $match, $capture1);
|
|