Pular para o conteúdo principal
Expressões regulares são usadas em dicionários baseados em expressões regulares para definir quais palavras são permitidas em um idioma e quais não são.

Regras de expressões regulares

O alfabeto de expressões regulares do ABBYY FineReader Engine está descrito na tabela a seguir:
Nome do itemSinal convencional de expressão regularExemplos de uso e explicações
Qualquer caractere.c.t — representa palavras como “cat”, “cot”
Caractere de um intervalo de caracteres[][b-d]ell — representa palavras como “bell”, “cell”, “dell” [ty]ell — representa as palavras “tell” e “yell”
Caractere fora de um intervalo de caracteres[^][^y]ell — representa palavras como “dell”, “cell”, “tell”, mas exclui “yell” [^n-s]ell — representa palavras como “bell”, “cell”, mas exclui “nell”, “oell”, “pell”, “qell”, “rell” e “sell”
Ou\c(a\u)t — representa as palavras “cat” e “cut”
0 ou mais ocorrências em sequência*10* — representa os números 1, 10, 100, 1000 etc.
1 ou mais ocorrências em sequência+10+ — permite os números 10, 100, 1000 etc., mas exclui 1.
Letra ou dígito[0-9a-zA-Z][0-9a-zA-Z] — permite um único caractere; [0-9a-zA-Z]+ — permite qualquer palavra
Letra latina maiúscula[A-Z]<br />
Letra latina minúscula[a-z]<br />
Letra cirílica maiúscula[А-Я]<br />
Letra cirílica minúscula[а-я]<br />
Dígito[0-9]<br />
Espaço[\s]<br />
Caractere do sistema@<br />
Palavra do dicionário@(Dictionary)O parâmetro Dictionary define o caminho para o dicionário do usuário do qual as palavras devem ser obtidas. Exemplo de caminho no Linux: @(/opt/MyDictionary.amd) exemplo de caminho no macOS: “/Users/user/Documents/MyDictionary.amd No Windows, as barras invertidas no caminho devem ser duplicadas. Por exemplo: @(D:\MyFolder\MyDictionary.amd). <Note> Algumas linguagens de programação (como C++) exigem que você escape as barras invertidas em literais de string. Nesse caso, serão necessárias duas barras invertidas escapadas, o que resultará em uma barra invertida quadruplicada. O exemplo acima ficará assim em C++: </Note> L"@(D:\\\\\\\\MyFolder\\\\\\\\MyDictionary.amd)"
  • Alguns caracteres usados em expressões regulares são “auxiliares”, isto é, são usados pelo sistema. Como você pode ver na lista acima, esses caracteres incluem colchetes, pontos etc. Se quiser inserir um caractere auxiliar como um caractere normal, coloque uma barra invertida () antes dele. Exemplo: [t-v]x+ representa palavras como “tx”, “txx”, “txxx” etc., “ux”, “uxx” etc., mas [t-v]x+ representa palavras como “[t-v]x”, “[t-v]xx”, “[t-v]xxx” etc.
  • Se precisar agrupar determinados elementos de expressão regular, use parênteses. Por exemplo, (a|b)+|c representa “c” e quaisquer combinações como “abbbaaabbb”, “ababab” etc. (uma palavra de qualquer comprimento diferente de zero em que pode haver qualquer quantidade de a’s e b’s em qualquer ordem), enquanto a|b+|c representa “a”, “c” e “b”, “bb”, “bbb” etc.

Exemplos de expressões regulares

Expressão regular para datas O número que representa o dia pode ter um dígito (por exemplo, 1, 2 etc.) ou dois dígitos (por exemplo, 02, 12), mas não pode ser zero (00 ou 0). A expressão regular para o dia ficará assim: ((|0)[1-9])|([12][0-9])|(30)|(31). A expressão regular para o mês ficará assim: ((|0)[1-9])|(10)|(11)|(12). A expressão regular para o ano ficará assim: (((19)|(20))[0-9][0-9])|([0-9][0-9]). Resta combinar tudo isso e separar os números com um ponto (por exemplo, 1.03.1999). O ponto é um caractere auxiliar, portanto devemos colocar uma barra invertida () antes dele. A expressão regular para a data completa ficará assim: (((|0)[1-9])|([12][0-9])|(30)|(31)).(((|0)[1-9])|(10)|(11)|(12)).((((19)|(20))[0-9][0-9])|([0-9][0-9])) Expressão regular para endereços de e-mail Você pode criar facilmente um idioma para representar endereços de e-mail. A expressão regular para um endereço de e-mail pode ficar assim: [a-zA-Z0-9_-.]+@[a-zA-Z0-9.-]+.[a-zA-Z]+

Uso na captura de dados

Se você usar expressões regulares no reconhecimento em nível de campo, em geral precisará reconhecer apenas as palavras que correspondam exatamente à expressão regular. Nesse caso, recomendamos criar um idioma separado para reconhecer os campos e definir para ele as seguintes propriedades:
  1. Apenas palavras do dicionário devem ser permitidas como resultados do reconhecimento: defina a propriedade IBaseLanguage::AllowWordsFromDictionaryOnly como TRUE. Isso é necessário para a correspondência exata.
  2. O conjunto de letras do idioma de reconhecimento deve conter apenas os caracteres incluídos na expressão regular: especifique a propriedade IBaseLanguage::LetterSet. Isso é necessário porque caracteres do alfabeto do idioma podem ser reconhecidos mesmo que não correspondam à expressão regular.
  3. Defina a propriedade IBaseLanguage::IsNaturalLanguage como FALSE.

Exemplos para Windows

// Objeto global do ABBYY FineReader Engine
FREngine.IEngine engine;
// Um objeto LanguageDatabase
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
// Crie um objeto TextLanguage
FREngine.ITextLanguage textLang = languageDatabase.CreateTextLanguage();
// Crie um objeto BaseLanguage e especifique as configurações
FREngine.IBaseLanguage baseLang = textLang.BaseLanguages.AddNew();
baseLang.set_LetterSet(FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "$0123456789,.");
baseLang.IsNaturalLanguage = false;
baseLang.AllowWordsFromDictionaryOnly = true;
// Crie um novo dicionário baseado em expressão regular e associe-o ao idioma
FREngine.IDictionaryDescription dictDescr = baseLang.DictionaryDescriptions.AddNew(FREngine.DictionaryTypeEnum.DT_RegularExpression);
// Defina a expressão regular
dictDescr.GetAsRegExpDictionaryDescription().SetText(@"[$0-9,.]+");

Veja também

Como trabalhar com dicionários RegExpDictionaryDescription