Aller au contenu
Facteur
ENCommencer

Désigner une valeur plutôt qu'écrire une expression régulière

Les pointeurs d'extraction — comment l'éditeur infère un motif, pourquoi il le teste sur vingt messages, et ce que RE2 refuse.

Quand extraction ne suffit pas — un identifiant maison, deux codes dans le même message, un jeton au format qui n’appartient qu’à vous — la réponse habituelle du secteur est de vous renvoyer écrire une expression régulière dans votre suite de tests. C’est exactement la compétence dont l’outil était censé vous dispenser.

Ici : vous désignez la valeur dans un vrai message, la plateforme écrit le motif.

Le geste

Dans la vue inbox, ouvrez un message et sélectionnez la valeur qui vous intéresse. L’éditeur propose plusieurs motifs, classés, chacun avec sa raison. Vous en choisissez un, vous le nommez, vous l’enregistrez.

Le pointeur s’applique ensuite à chaque nouveau message de l’inbox, et vous le relisez sous sa clé :

message.extract.codeCommande;

Les cinq stratégies proposées

StratégieCe qu’elle produitQuand elle gagne
shape\b(\d{6})\bLa forme est unique dans le message
contextancrage sur les mots qui précèdentLe défaut recommandé — survit à une refonte de la mise en page
context-strictancrage sur quatre motsPlusieurs valeurs de même forme
loose\b(\d{5,7})\bL’émetteur supprime parfois les zéros initiaux
literalla valeur exacteUne chaîne qui ne change jamais

Le classement n’est pas cosmétique : les motifs qui capturent exactement la sélection, et une seule fois, passent devant.

context est recommandé parce qu’il s’ancre sur les derniers mots littéraux qui précèdent la valeur. Une mise en page change souvent ; « votre code de confirmation est » beaucoup moins.

Le motif est testé sur vingt messages, pas sur celui que vous regardez

Avant l’enregistrement, le motif est confronté aux vingt derniers messages de l’inbox, et l’éditeur affiche combien donnent exactement une capture.

Un motif qui fonctionne sur le message sous vos yeux et échoue sur les dix précédents est précisément celui qui cassera une intégration continue à trois heures du matin.

L’aperçu utilise le moteur de production

Le test et l’aperçu sont exécutés par le service d’ingestion lui-même, pas par le navigateur ni par l’API. Si l’éditeur validait avec les expressions régulières de JavaScript pendant que l’ingestion utilise celles de Go, vous verriez une coche verte sur un motif qui se comporte autrement en production — le pire genre de défaut, puisqu’on vous a montré que tout allait bien.

Ce que RE2 refuse, et pourquoi c’est une bonne nouvelle

Le moteur est RE2 : temps linéaire, aucun retour sur trace. Un motif écrit par un client ne peut donc pas bloquer l’ingestion — la vôtre comme celle des autres.

La contrepartie est réelle et l’éditeur l’annonce plutôt que de laisser enregistrer un motif qui ne compilera jamais :

  • pas d’anticipation (?=…) ni (?!…) ;
  • pas de référence arrière \1.

Presque tout ce qu’une anticipation servirait à faire ici se réécrit en ancrant sur le contexte, ce que context fait déjà.

Le mode avancé

Le champ du motif reste éditable. Ce que vous y écrivez est validé de la même façon — compilation par RE2, puis passage sur les vingt derniers messages. Il n’y a pas de chemin qui contourne la vérification.