WikiPlus

Apprendre les expressions régulières avec des exemples interactifs

Les expressions régulières semblent intimidantes au premier abord, mais elles suivent une logique précise qui devient naturelle avec la pratique. Le Testeur de Regex de WikiPlus est l'outil idéal pour apprendre : chaque modification du pattern se reflète instantanément dans les résultats, vous voyez en direct pourquoi une correspondance fonctionne ou échoue. Explorez les métacaractères, les quantificateurs, les ancres, les classes de caractères et les groupes de capture à travers des exemples concrets tirés du développement web quotidien.

Métacaractères fondamentaux

La syntaxe des expressions régulières repose sur un ensemble de métacaractères ayant chacun une signification spéciale. Le point `.` correspond à n'importe quel caractère sauf un saut de ligne (à moins d'activer le flag `s`). L'astérisque `*` correspond à zéro ou plusieurs répétitions du token précédent. Le plus `+` correspond à une ou plusieurs répétitions. Le point d'interrogation `?` rend le token précédent optionnel (zéro ou une occurrence). Les accolades `{n,m}` permettent de spécifier un nombre exact ou une plage de répétitions. Le caret `^` ancre le pattern au début de la chaîne. Le signe dollar `$` l'ancre à la fin. Le pipe `|` correspond à l'un ou l'autre pattern (alternance). Les crochets `[...]` définissent une classe de caractères. Ces fondamentaux combinés couvrent la grande majorité des besoins pratiques.

Exemples pratiques : validation d'email

La validation d'email est l'un des usages les plus courants des expressions régulières. Un pattern simple mais efficace est `^[a-zA-Z0-9._%+\-]+@[a-zA-Z0-9.\-]+\.[a-zA-Z]{2,}$`. Ce pattern vérifie qu'un email commence par une séquence alphanumérique avec les caractères spéciaux autorisés, contient exactement un symbole `@`, est suivi d'un domaine valide, et se termine par une extension de deux caractères minimum. En testant ce pattern sur différentes adresses dans le testeur WikiPlus, vous observez immédiatement quels formats passent et lesquels échouent. Testez avec des cas limites comme `user+tag@example.co.uk`, `nom.prénom@domaine.fr` ou `invalide@.com` pour comprendre les comportements aux frontières.

Extraction de données depuis des logs

Les fichiers de logs sont une application classique des expressions régulières. Un log Apache typique contient sur chaque ligne l'adresse IP, la date, la méthode HTTP, le chemin, le code de statut et la taille de réponse. Le pattern `(\d{1,3}\.){3}\d{1,3}` extrait les adresses IP. Le pattern `"(GET|POST|PUT|DELETE|PATCH) ([^"]+) HTTP/[\d.]+"` capture la méthode et le chemin de chaque requête. Les groupes de capture nommés rendent ce type d'extraction encore plus lisible : `(?<methode>GET|POST) (?<chemin>/[^\s]+)` permet d'accéder directement à `match.groups.methode` et `match.groups.chemin` dans votre code JavaScript. Testez ces patterns dans WikiPlus avec de vrais extraits de logs pour affiner vos expressions avant de les intégrer dans vos scripts.

Patterns avancés : lookahead et lookbehind

Les assertions de lookahead et lookbehind permettent de conditionner une correspondance sur ce qui précède ou suit, sans inclure ces éléments dans la correspondance elle-même. Un lookahead positif `(?=pattern)` vérifie que le pattern suit sans le capturer. Un lookahead négatif `(?!pattern)` vérifie que le pattern ne suit pas. Un lookbehind positif `(?<=pattern)` vérifie que le pattern précède. Un lookbehind négatif `(?<!pattern)` vérifie que le pattern ne précède pas. Ces constructions sont très utiles pour extraire des valeurs dans un contexte précis : `(?<=prix:\s)\d+\.?\d*` extrait le nombre qui suit `prix: ` sans inclure le préfixe dans la correspondance. Testez ces patterns dans WikiPlus pour observer comment les assertions modifient les limites de correspondance.

Questions fréquemment posées

Comment les surlignes se mettent-ils à jour pendant la saisie ?
Chaque frappe déclenche un cycle de réévaluation synchrone. Le pattern est compilé, le moteur le teste contre le texte, et les spans de surlignes sont mis à jour dans le DOM. Pour les patterns déclenchant un backtracking excessif, un timeout de 1 000 ms protège l'onglet et affiche un avertissement.
Les expressions régulières JavaScript sont-elles compatibles avec d'autres langages ?
Partiellement. Les fonctionnalités de base comme les classes de caractères, les quantificateurs et les groupes sont universelles. Mais Python, PHP (PCRE2), Java et Go ont leurs propres dialectes. Traitez les résultats ici comme un point de départ et vérifiez les cas limites dans le runtime cible.
Comment puis-je partager un pattern avec un collègue ?
Le testeur propose un bouton de partage qui encode le pattern, les flags et un texte de test exemple dans le fragment d'URL (la partie après le #). Le fragment n'est jamais envoyé au serveur, donc l'URL partagée n'expose pas le pattern à l'infrastructure WikiPlus.