Capture de groupes arbitraires dans une expression régulière JavaScript
Lors de l'utilisation de la capture de groupes dans des expressions régulières JavaScript, il est essentiel d'en comprendre les limites. Par défaut, seule la dernière capture d'un groupe répété est conservée, même si le groupe est imbriqué.
Exemple : Groupe de capture imbriqué
Considérez l'expression régulière suivante :
/^(\s*\w+)+$/
Sortie attendue :
["foo bar baz", "foo", " bar", " baz"]
Sortie réelle :
["foo bar baz", " baz"]
Dans ce cas, seul le dernier groupe capturé, " baz ", est renvoyé. En effet, JavaScript ne conserve que la capture finale pour chaque groupe répété.
Options de capture de plusieurs groupes
Pour surmonter cette limitation, plusieurs options sont disponibles :
Exemple : boucle d'exécution et fractionnement
Voici un exemple utilisant une boucle d'exécution pour capturer et diviser un groupe imbriqué :
var text = "a;b;<c;d;e;f>;g;h;i;<no no no>;j;k;<xx;yy;zz>"; var r = /<(\w+(;\w+)*)>/g; var match; while ((match = r.exec(text)) != null) { print(match[1].split(";")); } // Output: // ["c", "d", "e", "f"] // ["xx", "yy", "zz"]
Dans cet exemple, le groupe imbriqué est capturé en tant que groupe 1, qui est ensuite divisé par le délimiteur point-virgule.
Questions connexes
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!