# Extraire une valeur sans écrire d'expression régulière

> Sélectionnez la valeur dans un vrai message, la plateforme écrit le motif et le teste sur vos vingt derniers messages.
> https://facteur.eu/aide/pointeurs

Un pointeur extrait une valeur que [Extraction](extraction) ne trouve pas seule : un
identifiant maison, un jeton dans un format qui n'appartient qu'à vous, ou l'un de
deux codes présents dans le même message.

Vous n'écrivez pas d'expression régulière. **Vous sélectionnez la valeur dans un vrai
message, et la plateforme écrit le motif.**

## Créer un pointeur

1. Dans la vue inbox, ouvrez un message qui contient la valeur.
2. **Sélectionnez la valeur** à la souris. L'éditeur propose plusieurs motifs,
   classés, chacun avec la raison qui le place là.
3. Choisissez un motif, nommez-le, enregistrez.

Le pointeur s'applique ensuite à **chaque nouveau message de l'inbox**, et vous le
lisez sous la clé que vous avez nommée :

```js
message.extract.codeCommande;
```

## Choisir la stratégie

| Stratégie | Le motif obtenu | Quand la choisir |
|---|---|---|
| `context` | ancrage sur les mots qui précèdent | **Le défaut recommandé.** Survit à une refonte de la mise en page |
| `context-strict` | ancrage sur quatre mots | Le message contient plusieurs valeurs de même forme |
| `shape` | `\b(\d{6})\b` | La forme est unique dans le message |
| `loose` | `\b(\d{5,7})\b` | L'émetteur supprime parfois les zéros initiaux |
| `literal` | la valeur exacte | Une chaîne qui ne change jamais |

Les motifs qui capturent **exactement** votre sélection, et **une seule fois**,
apparaissent en premier.

Prenez `context` si vous hésitez : 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.

## Lire le résultat du test avant d'enregistrer

Avant l'enregistrement, l'éditeur exécute le motif sur vos **vingt derniers
messages** et affiche combien donnent exactement une capture. Lisez ce nombre : un
motif qui fonctionne sur le message sous vos yeux et échoue sur les dix précédents est
celui qui cassera votre intégration continue à trois heures du matin.

Le test est exécuté par le service qui reçoit vos messages, donc par le même moteur
d'expressions régulières que la production. La coche verte de l'éditeur et le
comportement réel ne peuvent pas diverger.

## Ce que le moteur refuse

Les motifs sont compilés par **RE2**. Deux constructions n'existent pas, et l'éditeur
vous le dit avant d'enregistrer plutôt qu'à la première réception :

- l'anticipation `(?=…)` et `(?!…)` ;
- la référence arrière `\1`.

Presque tout ce que vous feriez avec une anticipation se réécrit en ancrant sur le
contexte, ce que `context` fait déjà.

## Écrire le motif à la main

Le champ du motif reste éditable si vous préférez l'écrire vous-même. Ce que vous y
mettez passe la même vérification : compilation par RE2, puis exécution sur vos vingt
derniers messages. Aucun chemin ne contourne le test.
