Syntaxreferens för reguljärt uttryck

Du kan definiera och tilldela anpassade indataomfattningar med hjälp av syntaxen för reguljära uttryck för handskrift som vissa av Microsofts handskriftskännare förstår. Syntaxen är en delmängd av implementering av reguljärt uttrycksspråk i .NET Framework.

Det finns vissa skillnader i hur reguljära handskriftsuttryck används och hur de andra typerna av reguljära uttryck används. Handskriftssyntaxen används för att ange en exakt sträng som ska matchas av igenkänningsmotorn och inte en understräng. Till exempel returnerar reguljära uttryck ([a-z]+)p matchningar för "soup", "stop", "instep" och "matstrupe". Medan ett motsvarande reguljärt handskriftsuttryck som s(!IS_ONECHAR)+p skulle matcha "soppa" och "stopp", men inte "steg" och "matstrupe".

Reguljära uttryck för handskrift stöder inte icke-icke-bakåtkompatibla blanksteg i reguljära uttryck. Du kan alltså inte använda entiteten "nbsp" i ett reguljärt handskriftsuttryck.

I följande avsnitt beskrivs syntaxen mer detaljerat.

Giltiga operatorer

Följande operatorer är giltiga för att skapa reguljära uttryck för att definiera indataomfattningar för handskriftskännare.

Operatör Beskrivning
*
Postfix unary operator som betecknar noll eller fler förekomster av operand.
+
Postfix unary operator som betecknar en eller flera förekomster av operand.
?
Postfix unary operator som betecknar noll eller en förekomst av operand.
|
Binär infixoperator som betyder "eller".
()
Används för att gruppera objekt.

 

Microsoft-implementeringen av reguljära uttryck för handskriftskännare tillåter upprepade program av postfix-unary-operatorer. Till exempel a** = (a*)* = a*, b?? = (b?)? = b?. De tillåter även icke-efterföljande upprepningar, till exempel: a*?* = ((a*)?)* = (a*)* = a*. Detta skiljer sig från reguljära .NET Framework-uttryck, som endast tillåter ? ska upprepas.

En annan skillnad jämfört med reguljära .NET Framework-uttryck är att reguljära uttryck för handskrift inte stöder ett tomt uttryck som är avsett med ett tomt par parenteser, ().

Not

Endast tecken på kodsidan 1252 stöds för handskrift av reguljära uttryck.

 

Använda indataomfattningar

Du kan också använda den uppsättning vanliga indataomfattningar som definieras som en del av funktionen SetInputScope i dina reguljära uttryck. Till exempel är värdet för Month (numerisk) IS_DATE_MONTH. Syntaxen för att ange ett indataomfång som en del av ett reguljärt uttryck är att förbereda det uppräknade värdet för indataomfånget med en öppen parentes och ett utropstecken, (!, och placera en avslutande parentes, ), i slutet. Till exempel:

(!IS_DATE_MONTH)

Om du kombinerar IS_DEFAULT indataomfånget av ORing med något annat indataomfång, är effekten att identifieraren kan returnera antingen ett enda uttryck som standardspråkmodellen stöder (till exempel ett ord från systemordlistan eller ett datum) med eller utan skiljetecken, eller något värde som uppfyller resten av det reguljära uttrycket som skickas till identifieraren.

Not

Följande medlemmar i SetInputScope stöds inte i reguljära uttryck: IS_PHRASELIST, IS_REGULAREXPRESSION, IS_SRGS, IS_XML.

 

Operatorer som inte stöds

Följande operatorer för reguljära uttryck stöds inte när du skapar reguljära uttryck för handskrift.

Operatör Beskrivning
.
Periodtecken.
[]
Hakparenteser. Använd parenteser för att gruppera objekt.
{}
Klammerparenteser.
(?# kommentar) och #[ kommentar ]
Kommentarer.
$
Dollarteckentecken.
^
Caret-tecken.
-
Bindestreck. Måste ELLER (|) samman alla uppsättningar med objekt.

 

Undantagna tecken

Vanliga tecken, förutom de i följande tabell, matchar sig själva. Det innebär att ett "a" i ett reguljärt uttryck anger att indata ska matcha ett "a".

En annan viktig skillnad när det gäller att skriva reguljära uttryck för handskrift är att du bara kan undkomma en begränsad uppsättning tecken i ett reguljärt uttryck. I följande tabell beskrivs den tillåtna uppsättningen tecken som kan undantagas. Alla andra försök att undkomma ett tecken resulterar i ett fel som utlöses av identifieraren.

Karaktär
\*
\+
\?
\(
\)
\|
\\
\!
\.
\[
\]
\^
\{
\}
\$
\#