정규식 구문 참조

일부 Microsoft 필기 인식기에서 이해하는 필기 정규식 구문을 사용하여 사용자 지정 입력 범위를 정의하고 할당할 수 있습니다. 구문은 .NET Framework에서 정규식 언어 구현 하위 집합입니다.

필기 정규식을 사용하는 방법과 다른 형식의 정규식이 사용되는 방식에는 몇 가지 차이점이 있습니다. 필기 구문은 하위 문자열이 아닌 인식 엔진에서 일치시킬 정확한 문자열을 지정하는 데 사용됩니다. 예를 들어 정규식 s([a-z]+)p는 "soup", "stop", "instep" 및 "esophagus"에 대한 일치 항목을 반환합니다. 반면 s(!IS_ONECHAR)+p와 같은 동등한 필기 정규식은 "수프" 및 "중지"와 일치하지만 "instep" 및 "식도"는 일치하지 않습니다.

필기 정규식은 정규식 내에서 호환되지 않는 공백을 지원하지 않습니다. 즉, 필기 정규식 내에서는 "nbsp" 엔터티를 사용할 수 없습니다.

다음 섹션에서는 구문을 자세히 설명합니다.

유효한 연산자

다음 연산자는 정규식을 만들어 필기 인식기의 입력 범위를 정의하는 데 유효합니다.

연산자 묘사
*
피연산자의 0개 이상의 발생을 나타내는 단항 후 연산자입니다.
+
피연산자의 하나 이상의 발생을 나타내는 단항 후 연산자입니다.
?
피연산자의 0개 또는 1개 발생을 나타내는 단항 후 연산자입니다.
|
"or"를 의미하는 이진 접두사 연산자입니다.
()
항목을 그룹화하는 데 사용됩니다.

 

필기 인식기를 위한 정규식의 Microsoft 구현을 사용하면 접두사 단항 연산자의 반복된 애플리케이션을 사용할 수 있습니다. 예를 들어 a** = (a*)* = a*, b?? = (b?)? = b?. 또한 연속적이지 않은 반복을 허용합니다(예: a*?* = ((a*)?)* = (a*)* = a*. 이는 ??만 허용하는 .NET Framework 정규식과 다릅니다. 반복할 연산자입니다.

.NET Framework 정규식의 또 다른 차이점은 필기 정규식이 빈 괄호 쌍()으로 지정된 빈 식을 지원하지 않는다는 점입니다.

메모

1252 코드 페이지의 문자만 정규식 필기에서 지원됩니다.

 

입력 범위 사용

정규식에서 SetInputScope 함수의 일부로 정의된 일반 입력 범위 집합을 사용할 수도 있습니다. 예를 들어 월 값(숫자)은 IS_DATE_MONTH. 입력 범위를 정규식의 일부로 지정하는 구문은 입력 범위 열거형 값 앞에 열린 괄호와 느낌표(!) 앞에 닫는 괄호를 배치하는 것입니다. 예를 들어:

(!IS_DATE_MONTH)

IS_DEFAULT 입력 범위를 다른 입력 범위와 ORing하여 결합하면 인식기가 기본 언어 모델에서 지원하는 단일 식(예: 시스템 사전 또는 날짜의 단어 하나)을 문장 부호 유무에 관계없이 반환하거나 인식기로 전달된 나머지 정규식을 충족하는 값을 반환할 수 있습니다.

메모

SetInputScope 멤버는 정규식에서 지원되지 않습니다. IS_PHRASELIST, IS_REGULAREXPRESSION, IS_SRGS, IS_XML.

 

지원되지 않는 연산자

다음 정규식 연산자는 필기 정규식을 만들 때 지원되지 않습니다.

연산자 묘사
.
마침표 문자입니다.
[]
대괄호. 항목 그룹화에 괄호를 사용합니다.
{}
중괄호.
(?# 주석) 및 #[ 주석 ]
코멘트.
$
달러 기호 문자입니다.
^
Caret 문자입니다.
-
대시 문자입니다. 모든 항목 집합을 함께 OR(|)해야 합니다.

 

문자 이스케이프

다음 표에 있는 문자가 아닌 일반 문자는 자체와 일치합니다. 즉, 정규식의 "a"는 입력이 "a"에 일치해야 한다고 지정합니다.

필기 정규식 작성의 또 다른 중요한 차이점은 정규식 내에서 제한된 문자 집합만 이스케이프할 수 있다는 것입니다. 다음 표에서는 이스케이프할 수 있는 허용되는 문자 집합을 간략하게 설명합니다. 문자를 이스케이프하려고 하면 인식기에서 오류가 발생합니다.

문자
\*
\+
\?
\(
\)
\|
\\
\!
\.
\[
\]
\^
\{
\}
\$
\#