Maison > interface Web > js tutoriel > Comment puis-je utiliser Regex pour rechercher des correspondances qui se chevauchent dans une chaîne ?

Comment puis-je utiliser Regex pour rechercher des correspondances qui se chevauchent dans une chaîne ?

Patricia Arquette
Libérer: 2024-12-06 05:19:10
original
966 Les gens l'ont consulté

How Can I Use Regex to Find Overlapping Matches in a String?

Correspondance de chaînes superposées avec Regex

Dans la chaîne "12345", en appliquant ".match(/d{3}/g)" devrait idéalement renvoyer trois correspondances : "123", "234" et "345". Cependant, une seule correspondance ("123") est obtenue.

Raison :

Le drapeau global "g" dans l'expression régulière consomme trois chiffres et avance l'index à la position après le premier match. Cela signifie que lorsque l'expression régulière essaie de faire correspondre la sous-chaîne suivante, l'index est déjà en position 3, ignorant ainsi les correspondances restantes qui se chevauchent.

Solution : assertion de largeur nulle

Une assertion de largeur nulle, en particulier une anticipation positive avec un groupe de capture, peut être utilisée pour faire correspondre toutes les positions dans la chaîne d'entrée. Cette technique consiste à :

  • Tester chaque position à l'aide de l'assertion d'anticipation.
  • Avancer manuellement la propriété RegExp.lastIndex pour éviter une boucle infinie.

Exemple en JavaScript :

var re = /(?=(\d{3}))/g;
console.log(Array.from('12345'.matchAll(re), x => x[1]));
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal