|match

Le filtre |match utilise une expression rationnelle [1] pour afficher un motif présent dans la balise, ou rien si absent.

Par exemple :
récupérer le premier mot du titre [(#TITRE|match{^\w+?})] ;
afficher "toto" si présent dans le titre : [(#TITRE|match{toto})]

Il est possible de passer 3 arguments à ce filtre :
le motif (ou « pattern ») : ex. ^a trouver$ ;
les options (ou modificateurs) : ex. Uims ;
le numéro de parenthèse capturante (par défaut l’intégralité du motif).

Mais il est aussi permis de ne passer que 2 arguments : le motif et le numéro de parenthèse capturante (ex. #BALISE|match{toto_(\d+)$, 1} qui ne retournera que le ou les chiffres finaux qui sont directement précédés par le mot ’toto_’).

Astuce :
S’il n’est pas possible de déclarer une classe de caractères comme argument du filtre : |match{[a-zA-Z]+} produira une erreur de compilation due à la présence des crochets [ et ],
il est néanmoins possible d’écrire des regexp complexes utilisant les classes de caractères en les définissant préalablement :

#SET{ma_regexp, ^[[:space:]]*([0-9]+)([.)]|Â?°)[[:space:]]+}
[(#DESCRIPTIF|match{#GET{ma_regexp}, Uims, 1})]

Attention :
Le filtre |match ne retournera, si elle existe, que la première occurrence rencontrée (et pas un tableau de toutes les occurrences).


À lire aussi : le filtre |replace

Notes

[1ne pas hésiter à consulter la page wikipedia dédiée : Expression_rationnelle

Auteur denisb, Teddy Publié le : Mis à jour : 26/11/13

Traductions : català, English, Español, français, Nederlands