Fonction REGEXFIND( )

Renvoie une valeur logique indiquant si le modèle spécifié par une expression ordinaire se produit dans une chaîne de caractères.

Syntaxe

REGEXFIND(chaîne_de_caractères; modèle)

Paramètres

Nom Type Description
chaîne

caractère

Le champ, l'expression ou la valeur littérale à tester pour un modèle correspondant.
modèle

caractère

La chaîne de modèle (expression ordinaire) à rechercher.

modèle peut contenir des caractères littéraux, des métacaractères ou une association des deux. Les caractères littéraux incluent tous les caractères alphanumériques, certains caractères de ponctuation et des caractères vides.

La recherche respecte la casse, ce qui signifie que les caractères alphanumériques en majuscules et en minuscules doivent être explicitement spécifiés.

Sortie

Logique. Renvoie T (« true », vrai) si la valeur modèle indiquée est trouvée ; renvoie F (« false », faux) dans les autres cas.

Exemples

Exemples basiques

Modèles de caractères alphabétiques

Renvoie T pour tous les enregistrements dont le champ Ville_fournisseur contient « Phoenix », « Austin » ou « Los Angeles ». Renvoie F autrement :

REGEXFIND(Ville_fournisseur; "Phoenix|Austin|Los Angeles")

Renvoie T pour tous les noms qui commencent par « John » ou par « Jon ». Par exemple : John, Jon, Johnson, Johnston, Jonson, Jonston, Jones, etc. Renvoie F autrement :

REGEXFIND(Nom;"^Joh?n")

Renvoie T pour uniquement les noms qui sont « John » ou « Jon ». Renvoie F autrement :

REGEXFIND(Nom;"^Joh?n\b")

Modèles de caractères numériques

Renvoie « T » pour tous les enregistrements dont les numéros de facture contiennent « 98 » : Renvoie F autrement :

REGEXFIND(No_Facture; "98")

Renvoie T pour tous les enregistrements dont les numéros de facture commencent par « 98 ». Renvoie F autrement :

REGEXFIND(No_Facture; "\b98")

Renvoie T pour tous les enregistrements dont les numéros de facture se terminent par « 98 ». Renvoie F autrement :

REGEXFIND(No_Facture; "98\b")

Renvoie T pour tous les enregistrements dont les numéros de facture contiennent « 98 » aux 5e et 6e places. Renvoie F autrement :

REGEXFIND(No_Facture; "\b\d\d\d\d98")
REGEXFIND(No_Facture; "\b\d{4}98")

Modèles de caractères mélangés

Renvoie T pour tous les enregistrements dont les codes produits commencent par 3 chiffres, suivis d'un trait d'union et de 6 lettres. Renvoie F autrement :

REGEXFIND(Code_Produit; "\b\d{3}-[a-zA-Z]{6}\b")

Renvoie T pour tous les enregistrements dont les codes produits commencent par 3 chiffres, suivis d'un trait d'union et d'au moins 6 lettres. Renvoie F autrement :

REGEXFIND(Code_Produit; "\b\d{3,}-[a-zA-Z]{6}")

Renvoie T pour tous les enregistrements dont les identificateurs de factures alphanumériques contiennent « 98 » aux 5e et 6e places. Renvoie F autrement :

REGEXFIND(No_Facture; "\b\w{4}98")

Renvoie T pour tous les enregistrements dont les identificateurs de factures contiennent les deux éléments suivants, renvoie F dans le cas contraire :

  • n'importe quel caractère dans les quatre premières places
  • « 98 » aux 5e et 6e places
REGEXFIND(No_Facture; "\b.{4}98")

Renvoie T pour tous les enregistrements dont les identificateurs de factures contiennent « 98 » précédé de 1 à 4 caractères de début. Renvoie F autrement :

REGEXFIND(No_Facture; "\b.{1,4}98")

Renvoie « T » pour tous les enregistrements dont les identificateurs de factures contiennent tous les éléments suivants, renvoie F dans le cas contraire :

  • n'importe quel caractère dans les trois premières places
  • « 5 » ou « 6 » à la 4e place et
  • « 98 » aux 5e et 6e places
REGEXFIND(No_Facture; "\b.{3}[56]98")

Renvoie « T » pour tous les enregistrements dont les identificateurs de factures contiennent tous les éléments suivants, renvoie F dans le cas contraire :

  • n'importe quel caractère dans les deux premières places
  • « 55 » ou « 56 » aux 3e et 4e places
  • « 98 » aux 5e et 6e places
REGEXFIND(No_Facture; "\b.{2}(55|56)98")

Remarques

Fonctionnement

La fonction REGEXFIND( ) utilise une expression ordinaire pour rechercher des données dans Analytics.

Les expressions ordinaires sont des chaînes de caractères de recherche puissantes et souples qui associent caractères littéraux et métacaractères, qui sont des caractères spéciaux effectuant une grande variété d'opérations de recherche.

Par exemple :

REGEXFIND(Nom;"Sm(i|y)the{0,1}")

utilise les métacaractères de groupe ( ), de changement | et de quantificateur { } pour créer une expression ordinaire qui trouve « Smith », « Smyth », « Smithe » ou « Smythe » dans le champ Nom.

Correspondances séquentielles

La correspondance entre les valeurs chaîne_de_caractères et modèle s'effectue de manière séquentielle. Dans l'exemple précédent :

  • "S" a une correspondance en première position dans le champ Nom
  • "m" a une correspondance en deuxième position
  • "i" et "y" ont une correspondance en troisième position
  • "t" a une correspondance en quatrième position
  • "h" a une correspondance en cinquième position
  • "e" a une correspondance en sixième position, si une sixième position existe dans la valeur source

Quand utiliser la fonction REGEXFIND( )

Utilisez la fonction REGEXFIND( ) pour rechercher des données à l'aide de mise en correspondance de modèles simples ou complexes.

La construction d'expressions ordinaires peut s'avérer être une tâche délicate, notamment si vous débutez dans la syntaxe. Il se peut que vous atteigniez vos objectifs de recherche à l'aide de fonctions de recherche Analytics plus simples comme FIND( ), MATCH( ) ou MAP( ).

Si vos critères de recherche dépassent les capacités de ces fonctions plus simples, les expressions ordinaires vous donnent presque une flexibilité illimitée dans la construction de chaînes de recherche.

Comment REGEXFIND( ) gère les espaces

Les espaces (valeurs vides) sont traitées comme des caractères dans les chaîne_de_caractères et modèle ; vous devez donc redoubler de vigilance lorsque vous traitez les espaces.

Dans modèle, il est possible d'indiquer un espace soit littéralement, en saisissant un espace, soit à l'aide du métacaractère \s. L'utilisation du métacaractère facilite la lecture des espaces dans modèle, qui risquent moins d'être négligées, notamment lorsque vous construisez des modèles plus complexes.

Concaténation de champs

Vous pouvez concaténer deux champs ou plus dans chaîne_de_caractères si vous souhaitez que votre recherche porte sur plusieurs champs en même temps.

Par exemple :

REGEXFIND(Nom_Fournisseur+Rue_Fournisseur;"Matériel.*Grand")

recherche les mots « Matériel » et « Grand » séparés par zéro ou plusieurs caractères dans les champs Nom_Fournisseur et Rue_Fournisseur.

Une entreprise dont le nom comporte le mot « Matériel », située dans une rue intitulée « Grand », correspond à cette expression ordinaire. Par exemple, une entreprise nommée « Matériel Grand-Rue » peut correspondre.

Les champs concaténés sont traités comme un seul champ incluant les espaces de début et de fin des champs individuels sauf si vous utilisez la fonction ALLTRIM( ) pour supprimer les espaces.

L'ordre des champs concaténés a de l'importance

REGEXFIND( ) recherchant les caractères dans modèle dans l'ordre que vous indiquez, l'ordre dans lequel vous concaténez les champs exerce une incidence. Si vous inversiez Nom_Fournisseur et Rue_Fournisseur dans l'expression ci-dessus, vous auriez moins de chances d'obtenir des résultats.

Métacaractères des expressions ordinaires

Le tableau suivant répertorie les métacaractères que vous pouvez utiliser avec REGEXFIND( ) et REGEXREPLACE( ) et décrit l'opération effectuée par chacun.

Une autre syntaxe, plus complexe et prise en charge par Analytics, existe pour les expressions ordinaires. Une explication complète d'une syntaxe supplémentaire sort de la portée du présent guide. De nombreuses ressources expliquant les expressions ordinaires sont disponibles sur Internet.

Analytics utilise l'implémentation ECMAScript des expressions ordinaires. La plupart des implémentations des expressions ordinaires utilisent une syntaxe principale courante.

Remarque

L'implémentation actuelle d'expressions ordinaires dans Analytics ne prend pas complètement en charge les langues de recherche différente de l'anglais.

Métacaractère

Description

.

Correspond à n'importe quel caractère (à l'exception d'un caractère de nouvelle ligne)

?

Correspond à 0 ou 1 occurrence de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement

*

Correspond à 0 ou plusieurs occurrences de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement

+

Correspond à 1 ou plusieurs occurrences de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement

{}

Correspond au nombre d'occurrences spécifié de la valeur littérale, du métacaractère ou de l'élément qui précède immédiatement. Il est possible de spécifier un nombre exact, une plage ou une plage non finie.

Par exemple :

  • a{3} correspond à « aaa »

  • X{0,2}L correspond à « L », « XL » et « XXL »

  • AB-\d{2,}-YZ correspond à n'importe quel identificateur alphanumérique dont le corps de l'identificateur contient le préfixe « AB- », le suffixe « -YZ » et au moins deux chiffres

[]

Correspond à n'importe quel caractère unique entre les crochets

Par exemple :

  • [aeiou] correspond à a ou e ou i ou o ou u

  • [^aeiou] correspond à n'importe quel caractère qui n'est ni un a ni un e ni un i ni un o ni un u

  • [A-G] correspond à n'importe quelle lettre en majuscule comprise entre A et G

  • [A-Ga-g] correspond à n'importe quelle lettre en majuscules comprise entre A et G ou en minuscules entre a et g

  • [5-9] correspond à n'importe quel nombre compris entre 5 et 9

()

Crée un groupe qui définit une séquence ou un bloc de caractères, qui peut ensuite être traité comme une seule unité.

Par exemple :

  • S(ch)?mid?th? correspond à « Smith » ou « Schmidt »

  • (56A.*){2} correspond à n'importe quel identificateur alphanumérique dans lequel la séquence « 56A » est présente au moins deux fois

  • (56A).*-.*\1 correspond à n'importe quel identificateur alphanumérique dans lequel la séquence « 56A » est présente au moins deux fois, avec un trait d'union entre les deux occurrences

\

Caractère d'échappement permettant d'indiquer que le caractère suivant immédiatement est un caractère littéral. Utilisez le caractère d'échappement si vous souhaitez faire correspondre littéralement des métacaractères. Par exemple, \( trouve une parenthèse gauche et \\ trouve une barre oblique inverse.

Utilisez le caractère d'échappement si vous souhaitez faire correspondre littéralement l'un des caractères suivants :

^ $ . * + ? = ! : | \ ( ) [ ] { }

Les autres caractères de ponctuation comme l'esperluette (&) ou le signe arobase (@) n'exigent pas de caractère d'échappement.

\int

Indique qu'un groupe, défini auparavant avec des parenthèses ( ), se répète. int est un entier qui identifie la position séquentielle du groupe défini précédemment vis-à-vis des autres groupes. Ce métacaractère peut être utilisé dans le paramètre modèle à la fois dans both REGEXFIND( ) et dans REGEXREPLACE( ).

Par exemple :

  • (123).*\1 correspond à n'importe quel identificateur dans lequel le groupe de chiffres « 123 » apparaît au moins deux fois

  • ^(\d{3}).*\1 correspond à n'importe quel identificateur dans lequel les trois premiers chiffres se répètent

  • ^(\d{3}).*\1.*\1 correspond à n'importe quel identificateur dans lequel les trois premiers chiffres se répètent au moins deux fois

  • ^(\D)(\d)-.*\2\1 correspond à n'importe quel identificateur dans lequel le préfixe alphanumérique se répète avec l'inversion des caractères alphabétiques et numériques

$int

Indique qu'un groupe trouvé dans une chaîne de caractères cible est utilisé dans une chaîne de remplacement. int est un entier qui identifie la position séquentielle du groupe dans la chaîne de caractères cible vis-à-vis des autres groupes. Ce métacaractère peut être uniquement utilisé dans le paramètre nouvelle_chaîne_de_caractères dans REGEXREPLACE( ).

Par exemple :

  • Si le modèle (\d{3})[ -]?(\d{3})[ -]?(\d{4}) est utilisé pour correspondre à différents formats de numéros de téléphone, la nouvelle_chaîne_de_caractères ($1)-$2-$3 peut être utilisée pour remplacer les numéros par eux-mêmes et standardiser la mise en forme. 999 123-4567 et 9991234567 deviennent tous les deux (999)-123-4567.

|

Correspond au caractère, aux blocs de caractères ou à l'expression avant ou après la barre verticale (|)

Par exemple :

  • a|b correspond à a ou à b

  • abc|def correspond à « abc » ou à « def »

  • Sm(i|y)th correspond à Smith ou à Smyth

  • [a-c]|[Q-S]|[x-z] correspond à l'une des lettres suivantes : a, b, c, Q, R, S, x, y, z

  • \s|- correspond à un espace ou à un trait d'union

\w

Correspond à un caractère de mot (a à z, A à Z, 0 à 9 et le caractère de soulignement _ )

\W

Correspond à un caractère de non-mot (non compris entre a et z ni entre A et Z ni entre 0 et 9 ni le caractère de soulignement _ )

\d

Correspond à n'importe quel nombre (décimale)

\D

Correspond à n'importe quel nombre (tout caractère qui n'est pas une décimale)

\s

Correspond à un espace (valeur vide)

\S

Correspond à tout non-espace (caractère non vierge)

\b

Correspond à une limite de mots (entre des caractères \w et \W)

Les limites de mots n'utilisent pas d'espace eux-mêmes. Par exemple :

  • "Équipement uni" contient 4 limites de mots : une de chaque côté de l'espace et une au début et à la fin de la chaîne de caractères. "Équipement uni" est associé à l'expression ordinaire \b\w*\b\W\b\w*\b

Astuce

Outre les espaces, les limites de mots peuvent émaner de virgules, points et autres caractères de non-mot.

Par exemple, l'expression suivante juge le résultat comme T (« true », vrai) :

REGEXFIND("jsmith@example.net"; "\bexample\b")

^

Correspond au début d'une chaîne de caractères

Entre crochets [ ], ^ inverse le contenu

$

Correspond à la fin d'une chaîne de caractères

Fonctions associées

Si vous souhaitez rechercher et remplacer des modèles de mise en correspondance, utilisez la Fonction REGEXREPLACE( ).

Guide de création de scripts ACL 14.1