|
rosegardenykです。またマクロ初心者の疑問です。
下記の//正規表現あいまい検索TEST用マクロを実行すると大部分(#i:1〜12)はうま
くのに、結果がおかしいケース (#i:13〜15) が見つかりました。何か設定ミスかプ
ログラミングミスでしょうか?
結果サマリ(v.8.20 β25)
以下のいずれの設定でも#i:1〜12は問題なし(#9は原文の数字区切りの有無による違
いだが問題なし)
#i:1〜12はすべて和文英文にある数字を見て後ろに続く英文にある同一数字を検索す
る場合です。
#i:13〜15、英文にある数字を見て後ろに続く和文にある同一数字を検索すると問題
発生。
設定1
あいまい検索設定 (X;チェックマーク ON)
X ヒープ領域使う
無視する文字「,」(半角カンマのみ)
#i: 15 で検索結果がおかしい
設定2
あいまい検索設定 (X;チェックマーク ON)
X 空白/タブを無視する
X ヒープ領域使う
無視する文字「,」(半角カンマのみ)
#i: 13 〜15 で検索結果がおかしい
設定3
あいまい検索設定 (X;チェックマーク ON)
X 半角全角を区別しない
X ヒープ領域使う
無視する文字「,」(半角カンマのみ)
#i: 15 で検索結果がおかしい
「半角全角を区別しない」のON/OFFは検索結果に影響しない模様です。
//正規表現あいまい検索TEST用マクロ
loaddll "hmjre.dll";
##n = dllfunc("SetUnicodeIndexAutoConvert", 1);//unicode文字による桁ずれを解消
$text = "∫可能性が高かった(ハザード比,それぞれ 1.90 [95% CI 1.12〜3.21]
と 2.02 [95% CI 1.13〜3.58])\n∬more likely to rupture (hazard ratio, 1.90
[95% CI, 1.12 to 3.21] and 2.02 [95% CI, 1.13 to 3.58], respectively). \n∫
ブレブもまた,可能性が高かった(ハザード比 1,234.63;95% CI 1.08〜2.48).\n
∬also more likely to rupture hazard ratio, 1234.63; 95% CI, 1.08 to 2.48 \n
\n∫結 論:この研究.\n∬ Conclusions:aneurysm. \n∬(Funded by the Ministry
of Health, Labor, and Welfare in Japan and others; 333 UCAS Japan UMIN-CTR P
ass number, C000000 418 \n∫(厚生労働省ほかから研究助成を 333 件受けた.\n
∫悉皆調査番号:C000000 418 \n";
$$f[1] = "1.90"; $$f[2] = "95"; $$f[3] = "1.12"; $$f[4] = "3.21"; $$f[5] = "
2.02";
$$f[6] = "1.13"; $$f[7] = "3.58"; $$f[8] = "1.90"; $$f[9] = "1,234.63"; $$f
[10] = "95";
$$f[11] = "1.08"; $$f[12] = "2.48"; $$f[13] = "333"; $$f[14] = "000000"; $$f
[15] = "418";
#i = 0;
while (#i <15) {
#i = #i + 1;
##f = dllfunc("FindRegular", $$f[#i], $text,0);
$$fig = midstr($text, ##f,dllfunc("GetLastMatchLength"));
##g = dllfunc("FindGeneral",0,1,1,"(?<="+$$fig + ".*?\n([∫∬].+?\n)*[∫∬]
(|.*?))" + $$fig ,$text, ##f);
##h = dllfunc("FindRegular", "([0-9][0-9,.]*|[A-Za-z]{3,9})", $text, ##g);//
数字を確定させる
$$h = midstr($text, ##h,dllfunc("GetLastMatchLength"));
if ($$fig != $$h) $wa = "検索結果が違います。#i = " + str(#i) + "\n" + $$fig
+ " vs. " + $$h; else $wa = "";
question "##f = " + str(##f) + "\n$$f[" + str(#i) + "] = " + $$f[#i] + "\n$
$fig = " + $$fig + "\n\n##g = " + str(##g) + "\n##h = " + str(##h) + "\n$$h
= " + $$h + "\n\n" + $wa;if (!result) endmacro;
}//while
endmacro;
|
|