Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| cold:tutoriaux:regex [2015/11/04 10:22] – florian | cold:tutoriaux:regex [2025/09/15 15:11] (Version actuelle) – [Recherche multi-ligne] florian | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| ====== Préambule ====== | ====== Préambule ====== | ||
| - | {{wiki: | + | {{wiki: |
| + | (à quelques exceptions près ((Article wikipedia sur les expression rationnelles https:// | ||
| - | ====== | + | ====== |
| - | Les parenthèses ( ) de groupement | + | Les parenthèses |
| + | Le plus souvent si nous réalisons une capture nous voudrons pouvoir y faire référence via un nom que nous aurons choisi. | ||
| + | |||
| + | En python la syntaxe qui permet cela est la suivante | ||
| + | (? | ||
| + | |||
| + | La sous-expression rationnelle(ici symbolisée par ... ) qui aura été trouvée sera accessible par le nom **// | ||
| + | |||
| + | Dès lors nous pouvons y faire référence dans la suite de l' | ||
| + | (? | ||
| + | |||
| + | Mais dans le cas de EzGED nous y ferons le plus souvent référence lors d'un post formatage grâce à la syntaxe [[cold: | ||
| + | |||
| + | Tout de suite un petit exemple. | ||
| + | |||
| + | ===== Numéro de facture ===== | ||
| + | Soit le texte extrait suivant | ||
| + | < | ||
| + | RueDuCommerce SA | ||
| + | Facture 44-50, avenue du Capitaine Glarner | ||
| + | 93585 Saint-Ouen Cedex | ||
| + | EzDEV | ||
| + | 2 Rue Adolphe Pégoud | ||
| + | 90130 PETIT-CROIX | ||
| + | |||
| + | Numéro de facture : 56497 Référence client : 100132 | ||
| + | Date de la facture : 04/ | ||
| + | </ | ||
| + | |||
| + | Cet exemple illustre bien l'un des cas que vous retrouvez le plus souvent. | ||
| + | Il s'agit de récupérer un numéro (ici de facture). | ||
| + | |||
| + | Nous pourrions être tentés de faire une recherche avec le filtre de champ | ||
| + | Numero de facture : .* | ||
| + | |||
| + | puis un post formatage | ||
| + | @keepdigits(@self) | ||
| + | |||
| + | Mais dans notre exemple ci-dessus si la longueur du champ ou les paramétrage de positionnement sont trop laxistes nous avons le risque de récupérer aussi la référence client. | ||
| + | |||
| + | Nous pouvons procéder autrement en capturant explicitement le premier numéro de la ligne: | ||
| + | Numero de facture : (? | ||
| + | |||
| + | Le premier numéro est la première suite de chiffres non interrompue. Elle prend fin dès lors que l'on rencontre autre chose qu'un chiffre (comme un espace ou une lettre). | ||
| + | |||
| + | {{wiki: | ||
| + | |||
| + | ===== Recherche multi-ligne ===== | ||
| + | |||
| + | Prenons cet exemple de texte extrait | ||
| + | |||
| + | {{: | ||
| + | |||
| + | Si l'on souhaite récupérer le numéro de facture on pourrait le faire assez simplement en utilisant la macro @relativeto. | ||
| + | Ce serait une bonne solution mais il existe une alternative qui ne nous obligera pas à créer deux champs d' | ||
| + | |||
| + | Comme le montre la capture nous utilisons un champ de type variable et nous ciblons à l'aide des paramètres de position la zone de recherche. La zone de recherche est encadrée en rouge (l' | ||
| + | |||
| + | Et l' | ||
| + | Facture N.[^\d]*(? | ||
| + | |||
| + | Décomposons l' | ||
| + | |||
| + | ^ Expression ^ Signification ^ | ||
| + | | Facture N. | Ce que l'on recherche commence par cette chaîne. Le point remplace le signe ° qui n'est pas bien géré. | | ||
| + | | %%[^\d]*%% | Ce qui suit doit être un caractère (excluant les chiffres) ou un retour à la ligne. Ce motif peut se répéter 0 ou plusieurs fois | | ||
| + | | (? | ||
| + | |||
| + | |||
| + | **En résumé :** Nous cherchons une chaîne qui **commence par** // | ||
| + | |||
| + | L' | ||
| + | 681476 | ||