Поделиться через


Справочник по синтаксису регулярных выражений

Вы можете определить и назначить пользовательские области ввода с помощью синтаксиса регулярного выражения рукописного ввода, который понимается некоторыми распознавателями рукописного ввода Майкрософт. Синтаксис представляет собой подмножество реализации языка регулярных выражений в .NET Framework.

Существуют некоторые различия в том, как используются рукописные выражения и способ использования других типов регулярных выражений. Синтаксис рукописного ввода используется для указания точной строки, которая будет соответствовать обработчику распознавания, а не подстроку. Например, регулярные выражения s([a-z]+)p возвращают совпадения для "суп", "стоп", "instep" и "esophagus". В то время как эквивалентное регулярное выражение, например s(!IS_ONECHAR)+p, будет соответствовать "суп" и "стоп", но не "instep" и "esophagus".

Рукописные регулярные выражения не поддерживают неразрывные пробелы в регулярных выражениях. То есть нельзя использовать сущность "nbsp" в регулярном выражении рукописного ввода.

В следующих разделах более подробно описан синтаксис.

Допустимые операторы

Следующие операторы допустимы для создания регулярных выражений для определения входных областей для распознавателей рукописного ввода.

Оператор Описание
*
Унарный оператор postfix, обозначающий ноль или больше вхождения операнда.
+
Унарный оператор postfix, обозначающий одно или несколько вхождений операнда.
?
Унарный оператор postfix, обозначающий ноль или одно вхождение операнда.
|
Оператор двоичного infix означает "или".
()
Используется для группирования элементов.

 

Реализация регулярных выражений для распознавателей рукописного ввода позволяет повторяющимся приложениям унарных операторов постфикса. Например, a** = (a)* = a*, b?? = (b?)? = b?. Они также разрешают повторения, не последовательных, например: a*?* = ((a*)?)* = (a)* = a*. Это отличается от регулярных выражений .NET Framework, которые разрешают только те? оператор, повторяющийся.

Другое отличие от регулярных выражений .NET Framework заключается в том, что рукописное запись регулярных выражений не поддерживает пустое выражение, назначенное пустой парой круглых скобок ().

Заметка

Поддерживаются только символы в кодовойpage 1252 для рукописного ввода регулярных выражений.

 

Использование входных областей

Вы также можете использовать набор регулярных областей ввода, определенных как часть функции SetInputScope в регулярных выражениях. Например, значение месяца (числовое) равно IS_DATE_MONTH. Синтаксис для указания входной области в рамках регулярного выражения заключается в том, чтобы подготовить перечисленное значение входной области с открытой скобкой и восклицательным знаком (!, и поместить закрывающую скобку) в конце. Например:

(!IS_DATE_MONTH)

Если вы объединяете область ввода IS_DEFAULT с помощью ORing его с любой другой входной областью, это то, что распознаватель может возвращать любое одно выражение, которое поддерживает языковая модель по умолчанию (например, одно слово из системного словаря или даты) с препинанием или без препинания, или любое значение, соответствующее остальному регулярному выражению, переданное распознавательу.

Заметка

Следующие члены SetInputScope не поддерживаются в регулярных выражениях: IS_PHRASELIST, IS_REGULAREXPRESSION, IS_SRGS, IS_XML.

 

Неподдерживаемые операторы

Следующие операторы регулярных выражений не поддерживаются при создании рукописных выражений.

Оператор Описание
.
Символ периода.
[]
Квадратные скобки. Используйте скобки для группирования элементов.
{}
Фигурные скобки.
(?# комментарий) и #[ комментарий ]
Комментарии.
$
Знак доллара.
^
Символ в хранях.
-
Символ Тире. Должен ИЛИ (|) объединить все наборы элементов.

 

Экранирование символов

Обычные символы, отличные от тех, которые в следующей таблице соответствуют себе. То есть значение "a" в регулярном выражении указывает, что входные данные должны соответствовать значению "a".

Еще одно существенное различие в написании регулярных выражений заключается в том, что можно использовать только ограниченный набор символов в регулярном выражении. В следующей таблице описан допустимый набор символов, которые можно экранировать. Любая другая попытка избежать символа приведет к возникновению ошибки распознавателя.

Характер
\*
\+
\?
\(
\)
\|
\\
\!
\.
\[
\]
\^
\{
\}
\$
\#