田楽、BREGEXP.DLLと「十」No.08133
じうら さん 16/06/30 18:11
 
$$dllFileName = hidemarudir + "\\dengakudll.dll";loaddll($$dllFileName);
#n=dllfunc("BRE_LOAD", "C:\\--略--\\秀丸\\BREGEXP.DLL");
//----------------------------------------------------------------------
$str="第百二十三条第一項";
$pos=dllfuncstr("BRE_MATCH","/(第[一二三四五六七八九十百千]+)条/", $str);
message $pos;
 freedll;
endmacroall;

というマクロなんですが、$strに漢数字の「十」があると$posが空になります。
「十」さえなければ、ちゃんとした値が返ってくるようなのですが、
どんなことが考えられますでしょうか。

[ ]
RE:08133 田楽、BREGEXP.DLLと「十」No.08134
h-tom さん 16/06/30 21:11
 

h-tom です。

>というマクロなんですが、$strに漢数字の「十」があると$posが空になります。
>「十」さえなければ、ちゃんとした値が返ってくるようなのですが、
>どんなことが考えられますでしょうか。

$pos=dllfuncstr("BRE_MATCH","/(第[一二三四五六七八九十百千]+)条/k", $str);
                                                               ==

BRE_MATCH の 正規表現パターンの最後に"k"を追加してください。
追加しないと、"BREGEXP.DLL"が、入力文字列をShift_JISと認識しません。

ASCII文字列と認識している為、「十」(0x8F5C)の2バイト目を 「\」(0x5C) と
認識しているので、変になっていると思います。

[ ]
RE:08134 田楽、BREGEXP.DLLと「十」No.08135
じうら さん 16/07/01 07:18
 

>h-tomさん、ありがとうございます。

>BRE_MATCH の 正規表現パターンの最後に"k"を追加してください。
>追加しないと、"BREGEXP.DLL"が、入力文字列をShift_JISと認識しません。

/k でうまくいきました。
この正規表現を使う人にとっては初歩的なことなんでしょうね。失礼いたしました。
ありがとうございました。

[ ]