Maison >interface Web >js tutoriel >Comment puis-je faire correspondre des chaînes qui se chevauchent à l'aide d'expressions régulières ?
Lors de la mise en correspondance de chaînes qui se chevauchent avec une expression régulière, il est important de comprendre comment fonctionnent la méthode de correspondance et la mise en mémoire tampon des expressions régulières.
Par défaut, la méthode de correspondance avec un indicateur global (g) dans une expression régulière, consomme les caractères correspondants et avance l'index jusqu'à la position juste après la sous-chaîne correspondante. Par exemple, l'expression régulière /d{3}/g correspondra à une séquence de trois chiffres, mais elle ne renverra qu'une seule correspondance car elle consomme les caractères correspondants.
Pour faire correspondre les chaînes qui se chevauchent, vous pouvez utiliser une assertion de largeur nulle, qui est une anticipation positive avec un groupe de capture. Cette assertion teste toutes les positions dans la chaîne d'entrée et si une correspondance est trouvée, le groupe de capture capture la sous-chaîne correspondante. La propriété RegExp.lastIndex est ensuite avancée manuellement pour éviter une boucle infinie.
Si votre langage de programmation prend en charge la méthode matchAll, vous pouvez l'utiliser pour implémenter des assertions de largeur nulle et trouver toutes les correspondances qui se chevauchent. Par exemple, en JavaScript, le code suivant utilise matchAll pour rechercher toutes les sous-chaînes à trois chiffres qui se chevauchent dans la chaîne « 12345 » :
var re = /(?=(\d{3}))/g; console.log(Array.from('12345'.matchAll(re), x => x[1]));
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!