Autant que je sache il n’y a aucune telle chose comme les groupes de captures nommées en JavaScript. Ce qui est l’autre moyen pour obtenir une fonctionnalité similaire ?
Réponses
Trop de publicités?Généralement, vous pouvez tout faire avec la normale (numérotés) de capturer les groupes que vous pouvez faire avec nommée capturer les groupes, vous avez juste besoin de garder une trace des numéros.
Il y a seulement deux "structurelle" avantages de l'nommé capturer les groupes que je pense:
Dans certains regex saveurs.NET et JGSoft, autant que je sache), vous pouvez utiliser le même nom pour les différents groupes de votre regex (voir ici pour un exemple où cette matière). Mais la plupart des regex saveurs ne prennent pas en charge cette fonctionnalité de toute façon.
Si vous avez besoin de se référer à numérotées de capturer les groupes dans une situation où ils sont entourés par des chiffres, vous pouvez obtenir un problème. Disons que vous voulez ajouter un zéro à un chiffre et donc vouloir remplacer
(\d)
avec$10
. En JavaScript, cela fonctionne (tant que vous avez moins de 10 capture d'un groupe dans votre regex), mais Perl vont penser que vous êtes à la recherche pour la référence arrière nombre10
au lieu de nombre1
, suivie par un0
. En Perl, vous pouvez utiliser${1}0
dans ce cas.
Autres que que, ainsi nommé de capturer les groupes sont juste "sucre syntaxique". Il permet d'utiliser la capture de groupes uniquement lorsque vous en avez vraiment besoin et l'utilisation de non-capture de groupes d' (?:...)
dans tous les autres cas.
Le problème avec le JavaScript, c'est qu'il ne prend pas en charge verbose regexes qui ferait de la création d'lisible, complexe expressions régulières beaucoup plus facile.
Vous pouvez utiliser XRegExp, (à partir de la page web:) augmentée, extensible, multi-navigateur et la mise en œuvre d'expressions régulières, y compris le soutien pour la syntaxe supplémentaire, les drapeaux et les méthodes:
- Ajoute de nouvelles regex et le texte de remplacement de la syntaxe, y compris la prise en charge globale de nommée à la capture.
- Ajoute deux nouveaux regex drapeaux: s, de faire dot correspondre à tous les personnages (aka dotall ou singleline mode), et x, gratuit pour les-de l'espacement et de commentaires (aka le mode étendu).
- Fournit une suite de fonctions et de méthodes qui rendent complexes les regex traitement d'une brise.
- Automatiquement les correctifs les plus couramment rencontrées croix-navigateur incohérences dans les regex comportement et la syntaxe.
- Vous permet de facilement créer et utiliser des plugins qui ajoutent une nouvelle syntaxe et des drapeaux XRegExp du langage d'expressions régulières.
Voir http://xregexp.com/ et http://xregexp.com/syntax/#namedCapture
D’attribution de noms de groupes capturés fournissent une chose : moins de confusion avec des expressions régulières complexes.
Cela dépend vraiment de votre cas d’utilisation mais peut-être impression votre expression régulière pourrait aider.
Ou vous pouvez essayer et de définir des constantes pour désigner vos groupes capturés.
Commentaires pourraient alors également aider à montrer aux autres qui lisent votre code, ce que vous avez fait.
Pour le reste je suis d’accord avec la réponse de Tims.