|match

  • Apparu en : SPIP 1.4

Het filter |match gebruikt een regular expression (regexp) [1] om een doel in een tekst weer te geven wanneer dit aanwezig is.

Bijvoorbeeld:
-  Selecteer het eerste woord van de titel: [(#TITRE|match{^\w+?})];
-  Geef "toto" weer als dat in de titel staat: [(#TITRE|match{toto})].

Je kunt drie argumenten aan dit filter leveren:
-  het doel (of «pattern»): bv. ^te vinden$ ;
-  de opties (of modifiers): bv. Uims ;
-  het aantal keer (standaard het hele doel).

Maar je mag ook twee argumenten doorgeven: het doel en het aantal keer (bv. #BALISE|match{toto_(\d+)$, 1} wat het cijfer of getal retourneert dat direct door het woord ’toto_’ wordt vooraf gegaan).

Tip :
Wanneer het niet mogelijk is een klasse van tekens te declareren als argument voor het filter, zal |match{[a-zA-Z]+} een compilatiefout genereren door de aanwezigheid van de rechte haakjes [ en ],
Toch kun je complexe regexp schrijven door gebruik te maken van een tekenklasse door deze vooraf te declareren:

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

Let op :
Het filter |match retourneert maximaal de eerste keer dat dat het doel wordt gevonden (en geen lijst van alle).


Lees ook het filter |replace.

Voetnoot

[1en kijk oook op Wikipedia bij: Regular_expression

Auteur Hanjo Gepubliceerd op:

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