Expressions régulières

Les expressions régulières sont utilisées dans tous les champs de recherche Data Workbench, y compris les panneaux d’entités de requête.

À propos des expressions régulières

Une expression régulière est un modèle de texte constitué d’une combinaison de caractères alphanumériques et de caractères spéciaux, appelés métacaractères, qui localise les modèles et extrait les sous-chaînes du texte. Les expressions régulières sont largement utilisées dans la programmation informatique et font partie intégrante de langues telles que Perl.

Pour identifier et extraire des modèles de chaîne complexes, le serveur Data Workbench utilise des expressions régulières dans certaines des transformations et conditions. Voici un bref guide sur les expressions régulières.

Cette annexe n’est pas une introduction complète aux expressions régulières. Une référence particulièrement intéressante est la publication de O'Reilly Mastering Regular Expressions, 2nd Edition de Jeffrey E. F. Friedl.

Terminologie des expressions régulières

Terme Définition
Littéral Un littéral est un caractère que nous utilisons dans une expression régulière pour localiser une séquence de caractères spécifique. Par exemple, pour trouver un produit dans shop/products.html, le produit de chaîne est un littéral ou ce que nous recherchons littéralement dans la chaîne.
Metacharacter Un métacaractère est un caractère spécial qui a une interprétation unique dans le contexte des expressions régulières. Par exemple, le point (.) est un métacaractère utilisé pour faire correspondre n’importe quel caractère.
Séquence d’échappement Une séquence d’échappement est simplement une façon de dire au moteur d’expression régulière que nous aimerions utiliser l’un des métacaractères comme littéral. Les séquences d’échappement commencent toujours par la barre oblique inverse (\). En plaçant la barre oblique inverse (qui est également un métacaractère) devant un métacaractère, le moteur d’expression régulière interprète le métacaractère avec échappement comme un littéral. Par exemple, si vous souhaitez faire correspondre la période du métacaractère (.), vous devez utiliser une séquence d’échappement. Cependant, pour correspondre à l’une des périodes de la chaîne 168.196.0.11, vous pouvez utiliser l’expression régulière composée d’une barre oblique inverse et d’un point (\.).
Modèle Il s’agit de la terminologie courte de l’expression régulière. Essentiellement, une expression régulière est un modèle que vous essayez de faire correspondre avec la chaîne cible.
Chaîne cible Ce terme fait référence à la chaîne dans laquelle nous recherchons pour localiser le modèle souhaité.

À propos de la correspondance littérale

La correspondance littérale prend une chaîne littérale sans caractère d’échappement et recherche dans la chaîne cible s’il s’agit d’une sous-chaîne de la chaîne cible.

Dans cet exemple, vous voyez comment fonctionne la correspondance littérale. Supposons que des données soient collectées à partir du trafic du site web et que le champ cs(referrer) contienne la valeur suivante :

https://www.abc.com/adventurenews/today.html?ad=123AZ45

Pour déterminer si le référent représente une personne ayant cliqué sur l’une des publicités, vous devez vérifier si le référent contient la publicité sous forme de chaîne. Vous pouvez simplement utiliser la chaîne littérale de l’annonce pour rechercher la chaîne cible et déterminer si une publicité a été utilisée pour acheminer le trafic vers le site. Bien que cela corresponde à la chaîne cible, il correspondrait à deux emplacements et est donc ambigu et peut entraîner des faux positifs.

L’URL suivante contient la publicité sous forme de chaîne à deux endroits différents :

https://www.abc.com/ad vertnews/today.html?ad =123AZ45

Par conséquent, si vous essayez de déterminer quelles sessions ont commencé suite à une campagne publicitaire particulière, il est évident que l’utilisation de la publicité littérale comme expression régulière ne suffit pas. Si vous modifiez le littéral en "ad=", cette ambiguïté disparaîtra et l’expression ne fera qu’une seule correspondance. Cependant, cela peut ne pas suffire à garantir que le référent faisait partie de la campagne de publicité. Examinez le référent suivant :

https://www.xyz.com/hello.html?pad=something

Vous n’avez aucun contrôle sur les URL que d’autres utilisateurs peuvent utiliser pour créer des liens vers le site. La correspondance littérale est un mécanisme trop simple pour localiser les sessions qui ont commencé à la suite de la campagne de publicité. La section suivante explique comment utiliser les métacaractères pour une correspondance plus flexible et plus puissante.

Utilisation de métacaractères

Un métacaractère est un caractère spécial dans un programme ou un champ de données qui fournit des informations sur d’autres caractères.

métacharactère description
. (point) Correspond à un caractère unique, par exemple : re:x.z correspond à "xyz" ou "xxz".
* (étoile) Correspond à un ou plusieurs caractères, par exemple : re:Z* correspond à "ZZZ".
? (caractère générique) Correspond à 0 ou 1 de l’expression précédente pour forcer une correspondance minimale, par exemple : xy?z correspond à "xy" et "xyz".

D’autres expressions régulières courantes peuvent également être utilisées pour créer des chaînes de recherche plus complexes.

Listes, plages et OU

La correspondance littérale permet de rechercher une seule chaîne, mais les crochets, les tirets et les barres verticales permettent de définir une liste des éléments à rechercher dans la chaîne cible.

Pour ce métacaractère... Le processeur d’expression régulière..
crochets ([ ]) Faites correspondre n’importe quel caractère du crochet à une seule position de caractère. Par exemple, [AB] est une instruction de correspondance de la lettre A ou de la lettre B et [0123456789] indique qu’une correspondance est établie avec n’importe quel caractère de la plage 0 à 9.
tiret (-)

Faire correspondre une plage de caractères. Ainsi, au lieu d'écrire [0123456789], nous pourrions simplement écrire [0-9].

Cela peut être étendu à des plages de caractères et à plusieurs plages entre crochets. Par exemple, [0-9A-C] correspond aux caractères 0 à 9 et A à C.

Remarque : Pour tester un tiret (-) comme littéral entre crochets, il doit être premier ou dernier. Par exemple, [-0-9] tests pour - et 0 à 9.

Tube (|) Faire correspondre l’une des deux options à une chaîne cible donnée. Par exemple, b|nat correspond à bat ou à nat.

Prenons les exemples suivants :

Modèle Chaîne Correspond à
Win9[58] OS=Win95 Win95
Win95 8 OS=Win98
[0-9] Mozilla/3.0 3
Leçon[A-Z] Leçon un Aucune correspondance car a de minuscule n’est pas compris dans la plage de A à Z de majuscule.

Négation

La négation est une manière de dire que vous souhaitez faire correspondre tout ce qui n’est pas les caractères donnés. Le métacaractère de négation, le circonflexe ou le caret (^), est utilisé comme premier caractère entre crochets pour dire que vous souhaitez que la correspondance soit autre que les autres caractères entre crochets. Par exemple, pour faire correspondre n’importe quel caractère à l’exception d’un point-virgule (;), vous écrivez

[^;]

Cela correspondrait à n’importe quel caractère, à l’exception du point-virgule.

Positionnement

Pour forcer une correspondance avec le début ou la fin d’une chaîne cible, deux métacaractères sont utilisés.

Pour ce métacaractère… Le processeur d’expression régulière…
Circumflex ou accent circonflexe (^) Établit une correspondance par rapport au début de la chaîne. Par exemple, ^[Tt]il correspondrait à la chaîne cible "Le début" mais ne correspondrait pas à "C’est le début".
Symbole du dollar ($) Établit une correspondance par rapport à la fin de la chaîne. Par exemple, [Ee]nd$ correspondrait à "C’est la fin", mais pas à "La fin est une heure spéciale".
REMARQUE

Lorsque l’expression régulière contient ^ au début et $ à la fin, la chaîne cible entière doit correspondre à l’expression régulière.

Correspondance de tout

La période (.) est un métacaractère spécial qui correspond à n’importe quel caractère de la chaîne cible. Par exemple, l’expression régulière ^…$ correspond à toute chaîne cible qui comporte exactement trois caractères. L’expression régulière "…" correspond à toute chaîne cible contenant au moins trois caractères.

Modèles répétés

Les métacaractères d’itération vous permettent de faire correspondre un modèle plusieurs fois.

Pour ce métacaractère... Le processeur d’expression régulière..
Point d’interrogation (?) Ne correspond à aucune instance ou instance du caractère précédant immédiatement le métacaractère (?). Par exemple, le motif rea?d correspond au rouge et à la lecture.
Astérisque (*) Correspondance de zéro ou plusieurs occurrences du caractère précédant immédiatement le métacaractère (*). Par exemple, le modèle [0-9]* correspond à n’importe quel nombre de caractères 0 à 9 (tout entier).
Plus (+) Correspondance d’une ou de plusieurs occurrences du caractère ou de la plage précédent. Par exemple, le modèle trois + correspondrait à trois, mais pas à travers.
{n}

Faites correspondre le caractère ou la plage de traitement exactement n fois. Le modèle suivant correspond aux numéros de téléphone des États-Unis : [0-9]{3}-[0-9]{3}-[0-9]{4}.

Bien qu’il ne s’agisse pas d’un modèle optimal, il détermine si la chaîne cible est dans le format approprié.

{n,m} Faites correspondre le caractère précédent au moins n fois et au plus m fois. Par exemple, pour{1,2}d correspondrait à la nourriture et à la nourriture, mais pas à la nourriture.

Extraction de modèle

La correspondance de motifs n’est qu’une partie de la puissance des expressions régulières. Les expressions régulières offrent également un mécanisme d’extraction des parties clés d’une chaîne cible. Pour ce faire, utilisez les parenthèses gauche et droite. Ces extractions sont généralement utilisées comme entrée dans un autre processus et sont accessibles via l’utilisation de %position%, où position est un entier faisant référence au nombre de parenthèses correspondantes.

Examinez les exemples suivants d’extraction de motifs :

Modèle Chaîne Correspond à Extraction
Win(9[58]) OS=Win95 Win95 %1 % = 95
(Win)(95|8) OS=Win98 Win98

%1% = Win

%2 % = 98

Mozilla/([0-9]).([0-9]) Mozilla/3.0 Mozilla/3.03

%1% = 3

%2% = 0

Lesson([A-Z]) Leçon un Aucune correspondance car a de minuscule n’est pas compris dans la plage de A à Z de majuscule

Sur cette page