Aller au contenu principal
Version: Next

Match regex

Match regex ( motif ; laChaîne ; début {; pos_trouvée ; long_trouvée}{; *} ) -> Résultat 
Match regex ( motif ; laChaîne ) -> Résultat

ParamètreTypeDescription
motifTextExpression régulière
laChaîneTextChaîne dans laquelle s’effectue la recherche
débutIntegerPosition dans laChaîne où doit débuter la recherche
pos_trouvéeInteger array, IntegerPosition de l’occurence
long_trouvéeInteger array, IntegerLongueur de l’occurence
*OpérateurSi passé : rechercher uniquement à la position indiquée
RésultatBooleanVrai = la recherche a trouvé une occurrence, Faux sinon
Match regex ( motif ; laChaîne ) -> Résultat
ParamètreTypeDescription
motifTextExpression régulière (égalité complète)
laChaîneTextChaîne dans laquelle s'effectue la recherche
RésultatBooleanVrai = la recherche a trouvé une occurrence, Faux sinon

Description

La commande Match regex permet de tester la conformité d’une chaîne de caractères par rapport à un ensemble de règles synthétisé au moyen d’un méta-langage appelé “expression régulière” ou “expression rationnelle”. L’abrévation regex est communément employée pour désigner ces familles de notations.

Passez dans motif l’expression régulière à rechercher. Il s’agit d’une suite de caractères chargée de décrire une chaîne de caractères, à l’aide de caractères spéciaux.

Passez dans laChaîne la chaîne dans laquelle rechercher l’expression régulière.

Passez dans début la position dans laChaîne où doit débuter la recherche.

Si pos_trouvée et long_trouvée sont des variables, la commande retourne la position et la longueur de l’occurrence dans ces variables. Si vous passez des tableaux, la commande retourne la position et la longueur de l’occurrence dans l’élément zéro des tableaux et les positions et longueurs des groupes capturés par l’expression régulière dans les éléments suivants.

Le paramètre * indique, s’il est passé, que la recherche doit s’effectuer à la position définie par début sans chercher plus loin en cas d’échec.

La commande retourne Vrai si la recherche a trouvé une occurrence.

Pour plus d’informations sur les regex, reportez-vous par exemple à l’adresse suivante :
http://fr.wikipedia.org/wiki/Expression%5Frationnelle

Pour plus d’informations sur la syntaxe de l’expression régulière passée dans le paramètre motif, reportez-vous à l’adresse suivante :
https://unicode-org.github.io/icu/userguide/strings/regexp.html#regular-expressions

Exemple 1

Recherche d’égalité complète (syntaxe simple) :
vtrouvé:=Match regex(motif;montexte)

 QUERY BY FORMULA([Employés];Match regex(".*smith.*";[Employés]nom))

Exemple 2

Recherche dans le texte par position :
vtrouvé:=Match regex( motif;montexte; début; pos_trouvée; long_trouvée)
Exemple pour afficher tous les tags de $1 :

 début:=1
 Repeat
    vtrouvé:=Match regex("<.*>";$1;début;pos_trouvée;long_trouvée)
    If(vtrouvé)
       ALERT(Substring($1;pos_trouvée;long_trouvée))
       début:=pos_trouvée+long_trouvée
    End if
 Until(Not(vtrouvé))

Exemple 3

Recherche avec prise en charge des “groupes capturés” via des parenthèses. ( ) permet de définir des groupes dans les regex :
vtrouvé:= Match regex( motif;montexte; début; tab_pos_trouvée; tab_long_trouvée)

 ARRAY LONGINT(tab_pos_trouvée;0)
 ARRAY LONGINT(tab_long_trouvée;0)
 vtrouvé:=Match regex("(.*)truc(.*)";$1;1;tab_pos_trouvée;tab_long_trouvée)
 If(vtrouvé)
    $group1:=Substring($1;tab_pos_trouvée{1};tab_long_trouvée{1})
    $group2:=Substring($1;tab_pos_trouvée{2};tab_long_trouvée{2})
 End if

Exemple 4

Recherche en limitant la comparaison de motif à la position indiquée :
Rajouter une étoile à la fin d’une des deux syntaxes précédentes.

 vtrouvé:=Match regex("a.b";"---a-b---";1;$pos_trouvée;$long_trouvée)
  //retourne Vrai
 vtrouvé:=Match regex("a.b";"---a-b---";1;$pos_trouvée;$long_trouvée;*)
  //retourne Faux
 vtrouvé:=Match regex("a.b";"---a-b---";4;$pos_trouvée;$long_trouvée;*)
  //retourne Vrai

Note : Les positions et longueurs retournées n’ont de sens qu’en mode Unicode ou si le texte manipulé est de type ASCII 7 bits.

Gestion des erreurs

En cas d’erreur, la commande génère une erreur que vous pouvez intercepter via une méthode installée par la commande APPELER SUR ERREUR.