7.8.15. TokenRegexp#

7.8.15.1. 概要#

バージョン 5.0.1 で追加.

注意

このトークナイザーは実験的です。仕様が変わる可能性があります。

注意

このトークナイザーはUTF-8でしか使えません。EUC-JPやShift_JISなどと一緒には使えません。

TokenRegexp はインデックスを使った正規表現検索をサポートするトークナイザーです。

7.8.15.2. 構文#

TokenRegexp には、引数がありません。

TokenRegexp

7.8.15.3. 使い方#

一般的に、正規表現検索は逐次検索で実行します。しかし、次のケースはインデックスを使って検索できます。

  • hello のようにリテラルしかないケース

  • \A/home/alice のようにテキストの最初でのマッチとリテラルのみのケース

  • \.txt\z のようにテキストの最後でのマッチとリテラルのみのケース

多くのケースでは、逐次検索よりもインデックスを使った検索の方が高速です。

TokenRegexp はベースはバイグラムを使います。 TokenRegexp は、インデックス時に、テキストの先頭にテキストの先頭であるというマーク( U+FFEF )を入れ、テキストの最後にテキストの最後であるというマーク( U+FFF0 )を入れます。

実行例:

tokenize TokenRegexp "/home/alice/test.txt" NormalizerAuto --mode ADD
# [
#   [
#     0,
#     1337566253.89858,
#     0.000355720520019531
#   ],
#   [
#     {
#       "value": "￯",
#       "position": 0,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "/h",
#       "position": 1,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "ho",
#       "position": 2,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "om",
#       "position": 3,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "me",
#       "position": 4,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "e/",
#       "position": 5,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "/a",
#       "position": 6,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "al",
#       "position": 7,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "li",
#       "position": 8,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "ic",
#       "position": 9,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "ce",
#       "position": 10,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "e/",
#       "position": 11,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "/t",
#       "position": 12,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "te",
#       "position": 13,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "es",
#       "position": 14,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "st",
#       "position": 15,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "t.",
#       "position": 16,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": ".t",
#       "position": 17,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "tx",
#       "position": 18,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "xt",
#       "position": 19,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "t",
#       "position": 20,
#       "force_prefix": false,
#       "force_prefix_search": false
#     },
#     {
#       "value": "￰",
#       "position": 21,
#       "force_prefix": false,
#       "force_prefix_search": false
#     }
#   ]
# ]