# 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
    #   ],
    #   [
    #     {
    #       "position": 0,
    #       "force_prefix": false,
    #       "value": "￯"
    #     },
    #     {
    #       "position": 1,
    #       "force_prefix": false,
    #       "value": "/h"
    #     },
    #     {
    #       "position": 2,
    #       "force_prefix": false,
    #       "value": "ho"
    #     },
    #     {
    #       "position": 3,
    #       "force_prefix": false,
    #       "value": "om"
    #     },
    #     {
    #       "position": 4,
    #       "force_prefix": false,
    #       "value": "me"
    #     },
    #     {
    #       "position": 5,
    #       "force_prefix": false,
    #       "value": "e/"
    #     },
    #     {
    #       "position": 6,
    #       "force_prefix": false,
    #       "value": "/a"
    #     },
    #     {
    #       "position": 7,
    #       "force_prefix": false,
    #       "value": "al"
    #     },
    #     {
    #       "position": 8,
    #       "force_prefix": false,
    #       "value": "li"
    #     },
    #     {
    #       "position": 9,
    #       "force_prefix": false,
    #       "value": "ic"
    #     },
    #     {
    #       "position": 10,
    #       "force_prefix": false,
    #       "value": "ce"
    #     },
    #     {
    #       "position": 11,
    #       "force_prefix": false,
    #       "value": "e/"
    #     },
    #     {
    #       "position": 12,
    #       "force_prefix": false,
    #       "value": "/t"
    #     },
    #     {
    #       "position": 13,
    #       "force_prefix": false,
    #       "value": "te"
    #     },
    #     {
    #       "position": 14,
    #       "force_prefix": false,
    #       "value": "es"
    #     },
    #     {
    #       "position": 15,
    #       "force_prefix": false,
    #       "value": "st"
    #     },
    #     {
    #       "position": 16,
    #       "force_prefix": false,
    #       "value": "t."
    #     },
    #     {
    #       "position": 17,
    #       "force_prefix": false,
    #       "value": ".t"
    #     },
    #     {
    #       "position": 18,
    #       "force_prefix": false,
    #       "value": "tx"
    #     },
    #     {
    #       "position": 19,
    #       "force_prefix": false,
    #       "value": "xt"
    #     },
    #     {
    #       "position": 20,
    #       "force_prefix": false,
    #       "value": "t"
    #     },
    #     {
    #       "position": 21,
    #       "force_prefix": false,
    #       "value": "￰"
    #     }
    #   ]
    # ]