「ひまわり」正規表現検索のコツ

小木曽 ogiso@ogiso.net

「ひまわり」で正規表現を使った検索をするときのコツです。

「ひまわり」の通常(本文)検索で使える正規表現

「ひまわり」で通常(本文)検索(インデックスを利用した検索)で使える正規表現は次のようになっています。

検索文字列(キー)に使える正規表現
通常の文字と列挙型の文字クラス。([国國] [らりるれろ]など)*1
前文脈・後文脈で使える正規表現
javaの正規表現ならすべて利用可能。
(範囲指定型の文字クラス[ら-ろ] や 文字クラスの否定[^国國][^ら-ろ]ももちろん可)
参考URL: http://docs.oracle.com/javase/jp/6/api/java/util/regex/Pattern.html

キーに使える正規表現に制限があるのは、検索を速くするためのインデックスをプログラムが利用するためです。インデックスを利用するためにキーには確定した文字を指定する必要があります。

キー・前文脈・後文脈の三つの部分に分かれているので、それぞれに検索のための文字列をうまく割り振ることでさまざまな検索目的に対応します。

正規表現をフルに使って検索するには

モードを切り替えて「本文(grep)」で検索すればほとんどの正規表現が使えます。 (ただし、検索対象のデータによっては用意されていないかも。設定ファイルを自分で書き換えれば利用できます。)

この場合、インデックスを使用しないので、検索速度は遅くなります。

正規表現による字種指定

文字種を指定するには大きく分けて二通りの方法があります。

  1. 文字クラスによる字種指定
    [ぁ-ん]ひらがな
    [ァ-ヴ]カタカナ
    [一-龠]*2漢字(JIS X0208内)
    [0-9]半角数字
    [A-Za-z]半角アルファベット
  2. Unicodeプロパティ、Unicodeブロックによる字種指定

テクニック

調べたい語に対応する正規表現を思いついても、それをそのままキーに入れて検索することができない場合があります(特にインデックスを利用した検索)。そんな場合には次のような工夫をして検索して下さい。

キーと前後文脈にうまく分けてやる

無理をしないで2回以上に分ける

10007


*1 文字クラス内の「-」はリテラル=文字通り解釈される。したがって[ら-ろ]は“ら”または“-”または“ろ”。
*2 Unicodeの範囲で指定するので[亜-熙]ではありません。
*3 Unicodeスクリプトは使えません

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS