Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
|
cold:tutoriaux:regex [2015/11/19 15:24] florian |
cold:tutoriaux:regex [2025/09/15 15:11] (Version actuelle) florian [Recherche multi-ligne] |
||
|---|---|---|---|
| Ligne 12: | Ligne 12: | ||
| (?P<nom_du_groupe_de_capture>...) | (?P<nom_du_groupe_de_capture>...) | ||
| - | La sous-expression régulière (ici symbolisée par ... ) qui aura été trouvée sera accessible par le nom **//nom_du_groupe_de_capture//** | + | La sous-expression rationnelle(ici symbolisée par ... ) qui aura été trouvée sera accessible par le nom **//nom_du_groupe_de_capture//** |
| - | Dès lors nous pouvons y faire référence dans la suite de l'expression régulière elle-même : | + | Dès lors nous pouvons y faire référence dans la suite de l'expression rationnelle elle-même : |
| - | (?P=nom_du_groupe_de_capture)\\ | + | (?P=nom_du_groupe_de_capture) |
| + | |||
| + | 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:reference:groupname|@<groupname>]].\\ | ||
| - | Mais le plus souvent nous voudront surtout y faire référence lors d'un post formatage.\\ | ||
| Tout de suite un petit exemple. | Tout de suite un petit exemple. | ||
| Ligne 43: | Ligne 44: | ||
| @keepdigits(@self) | @keepdigits(@self) | ||
| | | ||
| - | Ce qui pourrait fonctionner si nous spécifions correctement la longueur du champ. | + | 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. |
| - | Soit le filtre de champ suivant | + | Nous pouvons procéder autrement en capturant explicitement le premier numéro de la ligne: |
| - | Numero de facture : (?P<numero>\d+) | + | Numero de facture : (?P<numero>\d+)\D* |
| - | Pour ne garder que le numero on fera ceci dans le champ post de formatage : | + | 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). |
| - | @caststr(@<numero>) | + | {{wiki:icons:info.png}} \D est équivalent à la séquence [^0-9]. Elle identifie tout caractère sauf un chiffre. |
| | | ||
| ===== Recherche multi-ligne ===== | ===== Recherche multi-ligne ===== | ||
| Ligne 63: | Ligne 64: | ||
| 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'image est tronquée, elle s'étend jusqu'au bas du document). | 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'image est tronquée, elle s'étend jusqu'au bas du document). | ||
| - | Et l'expression régulière que nous utilisons est la suivante : | + | Et l'expression rationnelle que nous utilisons est la suivante : |
| - | Facture N.([^\d]|\n)*(?P<num>\d+) | + | Facture N.[^\d]*(?P<num>\d+) |
| Décomposons l'expression. | Décomposons l'expression. | ||
| Ligne 70: | Ligne 71: | ||
| ^ Expression ^ Signification ^ | ^ 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é. | | | 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]|\n)*%% | 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 | | + | | %%[^\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 | |
| | (?P<num>\d+) | On doit trouver au moins un chiffre. Cette suite de chiffre est capturée dans la variable num | | | (?P<num>\d+) | On doit trouver au moins un chiffre. Cette suite de chiffre est capturée dans la variable num | | ||