[Namazu-devel-ja 809] Re: [Namazu-users-ja 580] Re: 正規表現の「D」が小文字に変換されて意図した検索ができない

Tadamasa Teranishi yw3t-trns @ asahi-net.or.jp
2005年 12月 27日 (火) 16:08:23 JST


寺西です。

Tadamasa Teranishi wrote:
> 
> YH wrote:
> >
> > さて、正規表現検索で数字でない文字「\D」を使用して
> > 検索したいのですが、「\d」に変換されているようです。
> > これらのような正規表現で大文字小文字で意味がことなる検索は
> > できないのでしょうか。
> 
> まだ、ソースを調べていませんが、これはおそらくバグですね。
> パッチを作成したいと思います。

ソースを確認したところ、無条件で検索式を小文字に変換していたので、
バグでした。

修正パッチを作成次第、公開したいと思います。
ただし、Windows版のバイナリの提供の予定はありませんので、自力で
コンパイルするか、あるいは次の 2.0.15 までお待ちください。

それまでは \D は使えませんので [^0-9] で代用する等、検索式を工夫
してください。

# ここからは namazu-devel-ja 向け

ところで、namazu の正規表現検索は(古い)Rubyの正規表現ルーチンを使って
います。
ざっと調べたところ \W \S \D \A \Z \B \G 辺りが影響するようです。
この他にも文字クラス指定が影響します。

ただし、namazu の検索はインデックスに対して行われるもので、元文書
に対して行われるわけではありません。
インデックス作成時に大文字/小文字の変換の他、
http://www.asahi-net.or.jp/~yw3t-trns/nkf/nkf_z.html
のような変換が行われいるので、文字クラスの大文字/小文字はNamazuでは
意味がなく、\W \S \D \A \Z \B \G についても一部は意味を持たない
ものもあります。

対処方法としては、正規表現検索式の場合、'\' の後の文字については
大文字/小文字変換をしないという簡単なもので十分でしょう。

# ついでに別のバグも見つけてしまいました。
--
=====================================================================
寺西 忠勝(TADAMASA TERANISHI)  yw3t-trns @ asahi-net.or.jp
http://www.asahi-net.or.jp/~yw3t-trns/index.htm
Key fingerprint =  474E 4D93 8E97 11F6 662D 8A42 17F5 52F4 10E7 D14E




Namazu-devel-ja メーリングリストの案内