Comment extraire des informations de mon document à l'aide de REGEX ?
Exemples pratiques
Dans l'article actuel, nous montrons comment extraire n'importe quelle donnée du document grâce aux expressions régulières multi-éléments dans PaperOffice et la stocker automatiquement en tant que mot-clé pour le document.
Nous avons créé ci-dessous un exemple de document comportant une date spécifique. Ce document est une facture. Le modèle de date sur notre document est formaté comme ceci :
Extract information automatically from invoices
Mois, composé de lettres, mais la première lettre est toujours en majuscule, suivie d'un espace, puis du jour suivi d'une virgule, d'un autre espace, et enfin de l'année.
Par exemple : 20 septembre 2019 ou 5 mars 2022
Pour extraire cette date nous pouvons utiliser l'expression régulière suivante (REGEX) :
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Décomposons l'expression en groupes individuels. Ces groupes sont séparés par des crochets simples ().
Dans le premier groupe nous recherchons les lettres de 3 mois : ([A-Z][a-z]{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Extraire le mois
- [A-Z] Cette chaîne signifie que nous recherchons une lettre majuscule de A à Z. Par exemple, la lettre "S" de Sept. Il convient de noter que les lettres majuscules et minuscules sont traitées séparément.
- [a-z]{2} Cette chaîne signifie que nous recherchons deux lettres minuscules de a à z. Ce serait ep de "septembre".
Ensuite, nous recherchons un espace avec la chaîne suivante : \s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Date d'extraction
Dans le deuxième groupe, recherchez la désignation du jour en chiffres : (0[1-9]|[12][0-9]|3[01])
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Le jour doit être séparé par trois déclarations différentes.
Comme nous ne savons pas quelle date peut apparaître dans le document, il peut s'agir du premier jour (01) ou du dernier jour (31) du mois, donc vous devez en conséquence différentes options sont nommées.
Ceux-ci sont séparés par le caractère "|".
Exemple : (1|2|3) = 1 ou 2 ou 3.
Une liste de caractères autorisés suit entre crochets. Plusieurs crochets correspondent à plusieurs caractères.
Si une expression doit décrire plusieurs caractères, ceux-ci sont simplement attachés les uns après les autres. Ensuite, l'entrée est comparée à votre expression de gauche à droite.
Bien entendu, tous les numéros ne doivent pas nécessairement être répertoriés. Cependant, dans l’ensemble, l’expression entière entre crochets ne représente qu’un seul caractère.
-
0[1-9] Cette chaîne signifie que le nombre peut commencer par un "0" suivi d'un nombre de 1 à 9. Nous obtenons donc n'importe quel nombre de 01 à 09. li>
La chaîne recherche un modèle numérique commençant par un zéro. Si votre document porte normalement la date "5 mars 2022", c'est-à-dire sans le chiffre "0" devant le chiffre "5", le "0" dans la chaîne de caractères est omis.
-
[12][0-9] Cette chaîne de caractères signifie que le nombre peut commencer par un "1" ou un "2", suivi de n'importe quel nombre de 0 à 9. Le résultat peut être n'importe quel nombre les numéros de 10 à 29 sortent.
-
3[01] Cette chaîne signifie qu'un nombre peut commencer par un "3" suivi d'un "0" ou d'un "1". Le résultat pourrait être 30 ou 31.
Une fois les options pour le jour définies, l'expression pour l'année doit être déterminée.
Maintenant, cherchons la virgule et l'espace : ,\s
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s (20 \d{2})
Année d'extraction
Dans le dernier groupe nous recherchons l'année : (20\d{2})
([A-Z][a-z]{2})\s(0[1-9]|[12][0-9]|3[01]),\s(20\d {2 })
Nous commençons à chercher n'importe quelle année, mais sachez que ce sera ≥ 2000.
- 20 Cette chaîne signifie que nous recherchons n'importe quelle année commençant par exactement 20.
- \d{2} Cette chaîne signifie que nous recherchons un éventuel nombre à deux chiffres, c'est-à-dire de "00" à "99".
Par exemple, le caractère \d correspond à un chiffre compris entre 0 et 9, tandis que le caractère \d{2} correspond à un nombre à deux chiffres.
Variables are read from the document and made available
Si l'expression régulière est maintenant utilisée dans PaperOffice, le résultat final est la date "20 septembre 2019".
De cette manière, n'importe quelle date peut être lue dans un document sans que nous connaissions la valeur originale. Ces groupes peuvent également être utilisés n'importe où ailleurs et déplacés librement pour lire d'autres formats de date.
Voici un autre exemple :
Invoices with different formats can be easily read
La date commence par le jour, suivi du mois, composé de lettres, mais la première lettre est toujours en majuscule, suivie d'un point, d'un autre espace, puis de l'année.
Pour extraire cette date, l'expression régulière (REGEX) qui vient d'être décrite peut être utilisée, avec une complétion supplémentaire, car dans le deuxième exemple le "point" est donné après le mois.
Ceci peut être spécifié avec la chaîne de caractères suivante : \.
L'expression complète ressemble donc à ceci :
(0[1-9]|[12][0-9]|3[01])\s([A-Z][a-z]{2})\.\s(20\d{2 })
Vous pouvez toujours valider votre regex créée en vous rendant sur la page https://regex101.com pour la valider avec votre Insérer du texte. Regex101 vérifiera non seulement si votre regex est correcte, mais vous expliquera la plupart de l'expression régulière.
Vous pouvez ainsi utiliser les différents jeux de caractères pour tout.