Microsoft の手書き認識エンジンの一部で認識される手書き正規表現構文を使用して、カスタム入力スコープを定義して割り当てることができます。 構文は、.NET Framework の 正規表現言語実装 のサブセットです。
手書き正規表現の使用方法と、他の種類の正規表現の使用方法にはいくつかの違いがあります。 手書き構文は、サブ文字列ではなく、認識エンジンによって照合される正確な文字列を指定するために使用されます。 たとえば、正規表現 s([a-z]+)p は、"soup"、"stop"、"instep"、および "sopus" の一致を返します。 一方、s(!IS_ONECHAR)+p などの同等の手書き正規表現は、"soup" と "stop" と一致しますが、"instep" や "mfcus" には一致しません。
手書き正規表現では、正規表現内の改行されないスペースはサポートされません。 つまり、手書き正規表現内で "nbsp" エンティティを使用することはできません。
以降のセクションでは、構文について詳しく説明します。
有効な演算子
次の演算子は、手書き認識エンジンの入力スコープを定義する正規表現を作成する場合に有効です。
| 演算子 | 形容 |
|---|---|
| * |
オペランドの 0 回以上の出現を示す後置単項演算子。 |
| + |
オペランドの 1 つ以上の出現を示す後置単項演算子。 |
| ? |
オペランドの 0 回または 1 回の出現を示す後置単項演算子。 |
| | |
"or" を意味する二項インフィックス演算子。 |
| () |
アイテムをグループ化するために使用されます。 |
手書き認識エンジン用の正規表現の Microsoft 実装では、後置単項演算子を繰り返し適用できます。 たとえば、a** = (a*)* = a*, b?? = (b?)? = b?。 また、連続しない繰り返しも許可されます。たとえば、a*?* = ((a*)?)* = (a*)* = a*。 これは .NET Framework の正規表現とは異なり、〘〗〘 繰り返される演算子。
.NET Framework 正規表現とのもう 1 つの違いは、手書き正規表現では、空のかっこ () ペアで指定された空の式がサポートされないことです。
手記
手書き正規表現では、1252 コード ページの文字のみがサポートされています。
入力スコープの使用
正規表現で setInputScope関数の一部として定義されている一連の標準入力スコープを使用することもできます。 たとえば、Month (数値) の値はIS_DATE_MONTH。 正規表現の一部として入力スコープを指定する構文は、入力スコープの列挙値の先頭に、左かっこと感嘆符 (!) を付加し、最後にかっこを付けます。 例えば:
(!IS_DATE_MONTH)
ORing によってIS_DEFAULT入力スコープを他の入力スコープと組み合わせると、認識エンジンは、既定の言語モデルでサポートされている任意の単一の式 (たとえば、システム ディクショナリの 1 つの単語や日付) を句読点の有無にかかわらず返すか、または認識エンジンに渡される正規表現の残りの部分を満たす値を返すことができるということです。
手記
SetInputScope の次のメンバーは、正規表現ではサポートされていません:IS_PHRASELIST、IS_REGULAREXPRESSION、IS_SRGS、IS_XML。
サポートされていない演算子
手書き正規表現を作成する場合、次の正規表現演算子はサポートされていません。
| 演算子 | 形容 |
|---|---|
| . |
ピリオド文字。 |
| [] |
角かっこ。 項目をグループ化するためにかっこを使用します。 |
| {} |
中かっこ。 |
| (?# コメント) と #[ comment ] |
コメント。 |
| $ |
ドル記号文字。 |
| ^ |
キャレット文字。 |
| - |
ダッシュ文字。 すべての項目セットを OR (|) にする必要があります。 |
エスケープ文字
次の表に示す文字以外の通常の文字は、それ自体と一致します。 つまり、正規表現の "a" は、入力が "a" と一致することを指定します。
手書き正規表現を記述する際のもう 1 つの大きな違いは、正規表現内の限られた文字セットのみをエスケープできることです。 次の表は、エスケープ可能な文字セットの概要を示しています。 文字をエスケープしようとすると、認識エンジンによってエラーがスローされます。
| 文字 |
|---|
| \* |
| \+ |
| \? |
| \( |
| \) |
| \| |
| \\ |
| \! |
| \. |
| \[ |
| \] |
| \^ |
| \{ |
| \} |
| \$ |
| \# |