Accéder à toutes les captures dans les expressions régulières JavaScript
Le problème survient lorsque vous essayez de capturer plusieurs groupes dans une expression régulière JavaScript, où seul le dernier la capture est conservée.
Considérons l'exemple suivant :
"foo bar baz".match(/^(\s*\w+)+$/)
Au lieu de renvoyer toutes les correspondances comme ["foo", "bar", "baz"], il renvoie uniquement ["baz"]. Ce problème se produit car les groupes de captures répétées écrasent les captures précédentes.
Pour résoudre ce problème, envisagez des approches alternatives :
Par exemple, pour capturer une séquence de mots entourés de < > et divisez-les sur ;, considérez l'exemple suivant :
var text = "a;b;;g;h;i; ;j;k; "; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } Cette expression régulière divise la séquence capturée en mots individuels.
Références :
- [Informations sur les expressions régulières : répétition ou capture Groupes](https://www.regular-expressions.info/repeating-a-capturing-group-vs-capturing-a-repeating-group)
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!