Saltar al contenido principal
Las expresiones regulares se usan en los diccionarios basados en expresiones regulares para definir qué palabras están permitidas en un idioma y cuáles no.

Reglas de expresiones regulares

El alfabeto de expresiones regulares de ABBYY FineReader Engine se describe en la siguiente tabla:
Nombre del elementoSímbolo convencional de expresión regularEjemplos de uso y explicaciones
Cualquier carácter.c.t — denota palabras como “cat”, “cot”
Carácter de un rango de caracteres[][b-d]ell — denota palabras como “bell”, “cell”, “dell” [ty]ell — denota las palabras “tell” y “yell”
Carácter fuera de un rango de caracteres[^][^y]ell — denota palabras como “dell”, “cell”, “tell”, pero excluye “yell” [^n-s]ell — denota palabras como “bell”, “cell”, pero excluye “nell”, “oell”, “pell”, “qell”, “rell” y “sell”
O\c(a\u)t — denota las palabras “cat” y “cut”
0 o más apariciones seguidas*10* — denota los números 1, 10, 100, 1000, etc.
1 o más apariciones seguidas+10+ — permite los números 10, 100, 1000, etc., pero excluye 1.
Letra o dígito[0-9a-zA-Z][0-9a-zA-Z] — permite un solo carácter; [0-9a-zA-Z]+ — permite cualquier palabra
Letra latina mayúscula[A-Z]<br />
Letra latina minúscula[a-z]<br />
Letra cirílica mayúscula[А-Я]<br />
Letra cirílica minúscula[а-я]<br />
Dígito[0-9]<br />
Espacio[\s]<br />
Carácter del sistema@<br />
Palabra del diccionario@(Dictionary)El parámetro Dictionary establece la ruta al diccionario del usuario del que deben tomarse las palabras. Ejemplo de ruta en Linux: @(/opt/MyDictionary.amd) Ejemplo de ruta en macOS: “/Users/user/Documents/MyDictionary.amd En Windows, las barras invertidas de la ruta deben duplicarse. Por ejemplo: @(D:\MyFolder\MyDictionary.amd). <Note> Algunos lenguajes de programación (como C++) requieren escapar las barras invertidas en los literales de cadena. En este caso, necesitará dos barras invertidas escapadas, lo que dará como resultado una barra invertida cuadruplicada. El ejemplo anterior se verá así en C++: </Note> L"@(D:\\\\\\\\MyFolder\\\\\\\\MyDictionary.amd)"
  • Algunos caracteres utilizados en las expresiones regulares son “auxiliares”, es decir, se usan con fines del sistema. Como puede ver en la lista anterior, estos caracteres incluyen corchetes, puntos, etc. Si desea introducir un carácter auxiliar como uno normal, anteponga una barra invertida (). Ejemplo: [t-v]x+ denota palabras como “tx”, “txx”, “txxx”, etc., “ux”, “uxx”, etc., pero [t-v]x+ denota palabras como “[t-v]x”, “[t-v]xx”, “[t-v]xxx”, etc.
  • Si necesita agrupar determinados elementos de una expresión regular, use paréntesis. Por ejemplo, (a|b)+|c denota “c” y cualquier combinación como “abbbaaabbb”, “ababab”, etc. (una palabra de cualquier longitud distinta de cero en la que puede haber cualquier cantidad de a y b en cualquier orden), mientras que a|b+|c denota “a”, “c” y “b”, “bb”, “bbb”, etc.

Expresiones regulares de ejemplo

Expresión regular para fechas El número que indica el día puede constar de un dígito (p. ej., 1, 2, etc.) o de dos dígitos (p. ej., 02, 12), pero no puede ser cero (00 o 0). La expresión regular para el día tendrá entonces este aspecto: ((|0)[1-9])|([12][0-9])|(30)|(31). La expresión regular para el mes tendrá este aspecto: ((|0)[1-9])|(10)|(11)|(12). La expresión regular para el año tendrá este aspecto: (((19)|(20))[0-9][0-9])|([0-9][0-9]). Lo que queda es combinar todo esto y separar los números con un punto (p. ej., 1.03.1999). El punto es un signo auxiliar, por lo que debemos poner una barra invertida () delante. La expresión regular para la fecha completa tendrá entonces este aspecto: (((|0)[1-9])|([12][0-9])|(30)|(31)).(((|0)[1-9])|(10)|(11)|(12)).((((19)|(20))[0-9][0-9])|([0-9][0-9])) Expresión regular para direcciones de correo electrónico Puede definir fácilmente un patrón para representar direcciones de correo electrónico. La expresión regular para una dirección de correo electrónico puede tener este aspecto: [a-zA-Z0-9_-.]+@[a-zA-Z0-9.-]+.[a-zA-Z]+

Uso para la captura de datos

Si utiliza expresiones regulares en el reconocimiento a nivel de campo, por lo general solo necesita reconocer las palabras que coinciden exactamente con la expresión regular. En este caso, recomendamos crear un idioma independiente para reconocer los campos y establecer las siguientes propiedades para dicho idioma:
  1. Solo se deben permitir como resultados de reconocimiento las palabras del diccionario: establezca la propiedad IBaseLanguage::AllowWordsFromDictionaryOnly en TRUE. Esto es necesario para la coincidencia exacta.
  2. El conjunto de letras del idioma de reconocimiento debe contener únicamente los caracteres incluidos en la expresión regular: especifique la propiedad IBaseLanguage::LetterSet. Esto es necesario porque los caracteres del alfabeto del idioma pueden reconocerse incluso si no se ajustan a la expresión regular.
  3. Establezca la propiedad IBaseLanguage::IsNaturalLanguage en FALSE.

Ejemplos para Windows

// Objeto global de ABBYY FineReader Engine
FREngine.IEngine engine;
// Objeto LanguageDatabase
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
// Crear un objeto TextLanguage
FREngine.ITextLanguage textLang = languageDatabase.CreateTextLanguage();
// Crear un objeto BaseLanguage y especificar la configuración
FREngine.IBaseLanguage baseLang = textLang.BaseLanguages.AddNew();
baseLang.set_LetterSet(FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "$0123456789,.");
baseLang.IsNaturalLanguage = false;
baseLang.AllowWordsFromDictionaryOnly = true;
// Crear un nuevo diccionario basado en expresiones regulares y asociarlo al idioma
FREngine.IDictionaryDescription dictDescr = baseLang.DictionaryDescriptions.AddNew(FREngine.DictionaryTypeEnum.DT_RegularExpression);
// Establecer la expresión regular
dictDescr.GetAsRegExpDictionaryDescription().SetText(@"[$0-9,.]+");

Consulte también

Trabajar con diccionarios RegExpDictionaryDescription