Maison > interface Web > js tutoriel > le corps du texte

Comment capturer plusieurs groupes dans une expression régulière JavaScript répétée ?

Linda Hamilton
Libérer: 2024-11-13 10:33:02
original
601 Les gens l'ont consulté

How to Capture Multiple Groups in a Repeated JavaScript Regex?

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+)+$/
Copier après la connexion

Sortie attendue :

["foo bar baz", "foo", " bar", " baz"]
Copier après la connexion

Sortie réelle :

["foo bar baz", " baz"]
Copier après la connexion

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 :

  • Diviser sur les délimiteurs : Si possible, utilisez le fractionnement de chaînes pour séparer les segments souhaités.
  • Boucle d'exécution et fractionnement : Utilisez une boucle d'exécution pour faites correspondre à plusieurs reprises le motif dans une chaîne et divisez le groupe capturé en correspondances individuelles.
  • Correspondance à plusieurs niveaux : Capturez le groupe répété dans une correspondance, puis utilisez une autre expression régulière pour extraire les segments individuels.

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"]
Copier après la connexion

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

  • Comment accéder au groupes correspondants dans une expression régulière JavaScript ?

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