文字パターン・アノテーター

特に記載がない限り、バージョン 12.0.2 以降のバージョンに適用されます 文字パターン・アノテーターは、正規表現を使用してテキストからトークンを抽出した後、そのトークンにファセットを割り当てます。

正規表現に一致するテキスト・ストリングにファセットを割り当てる Java™ 正規表現を作成できます。

「新しいパターン」テキスト・ボックスに正規表現を入力します。「例」をクリックし、サンプル正規表現のいずれかをクリックして、テキスト・ボックスにコピーすることもできます。「追加」をクリックして「新しいパターン」ダイアログを開き、以下のフィールドを更新します。

正規表現
正規表現ストリング
名前
パターンの名前
説明
説明 (オプション)
ファセット
ファセット・パス。正規表現に一致するテキストがこのファセットに組み込まれます。階層を指定するには、ピリオド (.) 区切りの構文 (<aaa>.<bbb> など) を使用します。
ファセット値
ファセット値。ファセット値は照合するテキストから作成できます。$0 ... $n がテンプレート値となります。例えば、正規表現が "(123)-(345)" で、テキストが 123-345 である場合は、$0 = (123)-(345), $1 = 123, $2 = 345 となります。$0 は照合するテキストと同じになり、デフォルト値です。通常のテキストを使用できます。例えば、"value:$0" を指定すると、ファセット値は "value:(123)-(345)" となります。あるいは単純なテキストを使用できます。

「保存」をクリックして、このパターンをパターンのリストに追加します。パターンをテストするには、「テスト」をクリックし、テスト・ストリングを追加して、「追加」をクリックします。この操作を繰り返して、さらにテスト・ストリングを追加します。「テストを実行」をクリックして、「新しいパターン」テキスト・ボックスのパターンをテスト・ストリングに適用します。パターンと一致した場合、一致したテキストが緑色で強調表示され、ファセット値が表示されます。

パフォーマンスのヒント

正規表現は、Java パターンにコンパイルされます。通常、ユーザーは以下のことに留意する必要があります。

  • 正規表現を管理および理解できるように保つこと。
  • 一致または非一致に迅速に到達する正規表現を作成すること。
壊滅的なバックトラック
壊滅的なバックトラックの問題は、通常、正規表現エンジンがストリングの終盤までに一致の否定に到達できず、順列変更の試行回数が過剰になったときに発生します。

パターン (a+b*)+c とテキスト aaaaaaaaaaaaaaaaaaaaaaaaad を検討してみます。このテキストはパターンに一致しませんが、正規表現エンジンがバックトラックし、照合の実行が過度に遅くなります。

独占的数量詞を使用して、バックトラックを防止できます。例えば、(a+b*)++c とします。

代替
共通パターンを抽出するようにします。例えば、(ab|ac|ad) ではなく a(b|c|d) を使用します。
収集グループ
パターンでは収集グループを使用でき、結果が facetValue$n で参照されます。ここで n は、収集グループの順序です。$0 は、パターン全体に一致するテキストを表します。

ただし、収集グループによってパフォーマンスにペナルティーが発生します。収集する必要がない場合は、常に、非収集グループを使用してください。例えば、(X) ではなく (?:X) を使用します。