Maison  >  Article  >  interface Web  >  Comment capturer plusieurs groupes dans des expressions régulières JavaScript ?

Comment capturer plusieurs groupes dans des expressions régulières JavaScript ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-11 08:30:031011parcourir

How to Capture Multiple Groups in JavaScript Regular Expressions?

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 :

  • Diviser sur les délimiteurs : Si possible, divisez la chaîne sur un délimiteur connu au lieu d'utiliser un groupe de capture répété.
  • Regex avec g Flag : Utilisez un régulier expression avec le drapeau g pour parcourir toutes les correspondances. Notez que cela peut ne pas être un équivalent exact à la capture répétée de groupes.
  • Correspondance à plusieurs niveaux : Effectuez plusieurs correspondances d'expressions régulières pour capturer des modèles spécifiques, puis divisez-les ou traitez-les davantage.

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!

Déclaration:
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