Outils pour utilisateurs

Outils du site


cold:tutoriaux:regex

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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/05 15:33]
florian
cold:tutoriaux:regex [2025/09/15 15:11] (Version actuelle)
florian [Recherche multi-ligne]
Ligne 6: Ligne 6:
 ====== Capture ====== ====== Capture ======
  
-Les parenthèses ( ) de groupement permettent de délimiter un ensemble d'​alternatives et d'​opérer des captures.+Les parenthèses ​**( )** de groupement permettent de délimiter un ensemble d'​alternatives et d'​opérer des captures.
 Le plus souvent si nous réalisons une capture nous voudrons pouvoir y faire référence via un nom que nous aurons choisi. Le plus souvent si nous réalisons une capture nous voudrons pouvoir y faire référence via un nom que nous aurons choisi.
  
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 |
  
cold/tutoriaux/regex.1446737590.txt.gz · Dernière modification: 2023/03/17 09:56 (modification externe)