Backreferences de regex dans le motif : \n et \k<name>
Les backreferences, une fonctionnalité clé des expressions régulières, permettent aux développeurs de faire référence à des groupes précédemment capturés directement dans le motif. Dans ce guide, nous approfondirons les backreferences.
Comment utiliser les backreferences
En JavaScript, nous utilisons un antislash suivi d'un nombre pour faire référence à une partie du motif que nous avons déjà correspondue. Par exemple, \1 fait référence au premier groupe capturé, \2 au deuxième, et ainsi de suite. Nous pouvons également attribuer des noms à des parties de notre motif et utiliser ces noms plus tard.
Voyons un exemple :
Dans cet exemple, \1 fait référence au premier groupe capturé. L'expression entière correspond donc si un mot est répété, c'est pourquoi le motif correspond à « hello hello ».
Utilisation des groupes nommés
Au lieu d'utiliser des nombres, nous pouvons attribuer des noms à des parties de notre motif. Cela facilite la compréhension. Pour plus d'informations, consultez la page précédente, Groupes de capture, où nous avons également abordé les groupes nommés. Voici un exemple simple :
Dans cet exemple, (?<word>\w+) est un groupe nommé. Nous utilisons \k<word> pour faire référence à ce groupe nommé par la suite.
Remarque : Les groupes nommés et les backreferences \k<name> sont pris en charge dans tous les navigateurs modernes et les environnements Node.js sans nécessiter de drapeaux.
Utilisations avancées
Les backreferences peuvent faire plus que simplement répéter des éléments. Examinons un exemple avancé :
Correspondance de chiffres consécutifs
Nous pouvons utiliser des backreferences pour faire correspondre un chiffre uniquement si le chiffre qui le suit immédiatement est différent. Par exemple :
Ici, \1 est le chiffre que nous avons précédemment fait correspondre. Le motif ne correspond à un chiffre que si le chiffre suivant est différent de celui capturé. Cette technique est utile pour valider des séquences où les caractères adjacents doivent différer, comme certaines règles de mot de passe ou formats de données.
Remarque : Bien que puissantes, les backreferences peuvent impacter les performances sur de grandes chaînes. Certains moteurs d'expressions régulières ont également des limitations lors de l'utilisation de backreferences à l'intérieur de lookahead/lookbehind, alors testez soigneusement vos motifs dans votre environnement cible.
Conclusion
Comprendre les backreferences dans les expressions régulières JavaScript nous aide à effectuer des tâches de correspondance de texte avancées. En sachant comment les utiliser, nous pouvons résoudre plus facilement des problèmes complexes. Essayez d'utiliser ces techniques dans vos propres projets JavaScript !
Pratique
Laquelle des affirmations suivantes sur les backreferences dans les expressions régulières JavaScript est vraie ?