Passer au contenu principal
Les expressions régulières sont utilisées dans les dictionnaires basés sur les expressions régulières pour définir quels mots sont autorisés dans une langue et lesquels ne le sont pas.

Règles des expressions régulières

L’alphabet des expressions régulières dans ABBYY FineReader Engine est décrit dans le tableau suivant :
Nom de l’élémentSigne conventionnel d’expression régulièreExemples d’utilisation et explications
N’importe quel caractère.c.t — désigne des mots tels que « cat », « cot »
Caractère appartenant à une plage de caractères[][b-d]ell — désigne des mots tels que « bell », « cell », « dell » [ty]ell — désigne les mots « tell » et « yell »
Caractère n’appartenant pas à une plage de caractères[^][^y]ell — désigne des mots tels que « dell », « cell », « tell », mais exclut « yell » [^n-s]ell — désigne des mots tels que « bell », « cell », mais exclut « nell », « oell », « pell », « qell », « rell » et « sell »
Ou\c(a\u)t — désigne les mots « cat » et « cut »
0 occurrence ou plus à la suite*10* — désigne les nombres 1, 10, 100, 1000, etc.
1 occurrence ou plus à la suite+10+ — autorise les nombres 10, 100, 1000, etc., mais exclut 1.
Lettre ou chiffre[0-9a-zA-Z][0-9a-zA-Z] — autorise un seul caractère ; [0-9a-zA-Z]+ — autorise n’importe quel mot
Lettre latine majuscule[A-Z]<br />
Lettre latine minuscule[a-z]<br />
Lettre cyrillique majuscule[А-Я]<br />
Lettre cyrillique minuscule[а-я]<br />
Chiffre[0-9]<br />
Espace[\s]<br />
Caractère système@<br />
Mot du dictionnaire@(Dictionary)Le paramètre Dictionary définit le chemin du dictionnaire utilisateur à partir duquel les mots doivent être pris. Exemple de chemin sous Linux : @(/opt/MyDictionary.amd) exemple de chemin sous macOS : “/Users/user/Documents/MyDictionary.amd Sous Windows, les barres obliques inverses du chemin doivent être doublées. Par exemple : @(D:\MyFolder\MyDictionary.amd). <Note> Certains langages de programmation (comme C++) exigent d’échapper les barres obliques inverses dans les littéraux de chaîne. Dans ce cas, vous aurez besoin de deux barres obliques inverses échappées, ce qui donnera une barre oblique inverse quadruplée. L’exemple ci-dessus se présentera ainsi en C++ : </Note> L"@(D:\\\\\\\\MyFolder\\\\\\\\MyDictionary.amd)"
  • Certains caractères utilisés dans les expressions régulières sont « auxiliaires », c’est-à-dire qu’ils sont utilisés à des fins système. Comme vous pouvez le voir dans la liste ci-dessus, ces caractères incluent les crochets, les points, etc. Si vous souhaitez saisir un caractère auxiliaire comme un caractère normal, placez une barre oblique inverse () devant lui. Exemple : [t-v]x+ désigne des mots tels que « tx », « txx », « txxx », etc., « ux », « uxx », etc., mais [t-v]x+ désigne des mots tels que « [t-v]x », « [t-v]xx », « [t-v]xxx », etc.
  • Si vous devez regrouper certains éléments d’une expression régulière, utilisez des parenthèses. Par exemple, (a|b)+|c désigne « c » et toutes les combinaisons comme « abbbaaabbb », « ababab », etc. (un mot non vide pouvant contenir n’importe quel nombre de a et de b dans n’importe quel ordre), tandis que a|b+|c désigne « a », « c » et « b », « bb », « bbb », etc.

Exemples d’expressions régulières

Expression régulière pour les dates Le nombre indiquant le jour peut comporter un chiffre (par ex., 1, 2, etc.) ou deux chiffres (par ex., 02, 12), mais il ne peut pas être égal à zéro (00 ou 0). L’expression régulière pour le jour aura alors cette forme : ((|0)[1-9])|([12][0-9])|(30)|(31). L’expression régulière pour le mois aura cette forme : ((|0)[1-9])|(10)|(11)|(12). L’expression régulière pour l’année aura cette forme : (((19)|(20))[0-9][0-9])|([0-9][0-9]). Il ne reste plus qu’à combiner tous ces éléments et à séparer les nombres par un point (par ex., 1.03.1999). Le point est un caractère auxiliaire ; il faut donc le faire précéder d’une barre oblique inverse (). L’expression régulière pour la date complète aura alors cette forme : (((|0)[1-9])|([12][0-9])|(30)|(31)).(((|0)[1-9])|(10)|(11)|(12)).((((19)|(20))[0-9][0-9])|([0-9][0-9])) Expression régulière pour les adresses e-mail Il est facile de définir un langage permettant de représenter des adresses e-mail. L’expression régulière d’une adresse e-mail peut avoir cette forme : [a-zA-Z0-9_-.]+@[a-zA-Z0-9.-]+.[a-zA-Z]+

Utilisation pour la capture de données

Si vous utilisez des expressions régulières dans la reconnaissance au niveau des champs, vous devez généralement reconnaître uniquement les mots qui correspondent exactement à l’expression régulière. Dans ce cas, nous vous recommandons de créer une langue distincte pour la reconnaissance des champs et de définir les propriétés suivantes pour cette langue :
  1. Seuls les mots du dictionnaire doivent être autorisés comme résultats de reconnaissance : définissez la propriété IBaseLanguage::AllowWordsFromDictionaryOnly sur TRUE. Cela est nécessaire pour une correspondance exacte.
  2. Le jeu de lettres de la langue de reconnaissance ne doit contenir que les caractères inclus dans l’expression régulière : spécifiez la propriété IBaseLanguage::LetterSet. Cela est nécessaire, car des caractères de l’alphabet de la langue peuvent être reconnus même s’ils ne correspondent pas à l’expression régulière.
  3. Définissez la propriété IBaseLanguage::IsNaturalLanguage sur FALSE.

Exemples pour Windows

// Objet ABBYY FineReader Engine global
FREngine.IEngine engine;
// Objet LanguageDatabase
FREngine.ILanguageDatabase languageDatabase = engine.CreateLanguageDatabase();
// Créez un objet TextLanguage
FREngine.ITextLanguage textLang = languageDatabase.CreateTextLanguage();
// Créez un objet BaseLanguage et spécifiez les paramètres
FREngine.IBaseLanguage baseLang = textLang.BaseLanguages.AddNew();
baseLang.set_LetterSet(FREngine.BaseLanguageLetterSetEnum.BLLS_Alphabet, "$0123456789,.");
baseLang.IsNaturalLanguage = false;
baseLang.AllowWordsFromDictionaryOnly = true;
// Créez un nouveau dictionnaire basé sur une expression régulière et associez-le à la langue
FREngine.IDictionaryDescription dictDescr = baseLang.DictionaryDescriptions.AddNew(FREngine.DictionaryTypeEnum.DT_RegularExpression);
// Définissez l’expression régulière
dictDescr.GetAsRegExpDictionaryDescription().SetText(@"[$0-9,.]+");

Voir aussi

Utilisation des dictionnaires RegExpDictionaryDescription