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 le dernier groupe capturé, "baz", est restitué. 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 : Exec Loop 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
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3