Maison >développement back-end >Golang >Comment puis-je émuler la capture de groupes dans les expressions régulières Go ?

Comment puis-je émuler la capture de groupes dans les expressions régulières Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-31 02:06:14844parcourir

How Can I Emulate Capturing Groups in Go Regular Expressions?

Capture de groupes dans les expressions régulières Go

Dans Go, les expressions régulières utilisent la bibliothèque RE2, qui ne prend pas en charge nativement la capture de groupes comme on le trouve dans Ruby et autres langages. Cependant, il existe une solution pour émuler cette fonctionnalité.

Pour obtenir le comportement souhaité, il faut ajouter « P » au nom du groupe, comme illustré dans l'expression mise à jour suivante :

(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})

Pour extraire les valeurs des groupes de capture, on peut utiliser la fonction re.SubexpNames() pour obtenir les noms de groupe et les croiser avec les données de correspondance.

Considérez l'exemple suivant :

package main

import (
    "fmt"
    "regexp"
)

func main() {
    r := regexp.MustCompile(`(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})`)
    fmt.Printf("%#v\n", r.FindStringSubmatch(`2015-05-27`))
    fmt.Printf("%#v\n", r.SubexpNames())
}

Dans cet exemple, r.FindStringSubmatch() renvoie la sous-chaîne correspondante et le r.SubexpNames() correspondant fournit les noms de groupe :

[]string{"2015", "05", "27"}
[]string{"", "Year", "Month", "Day"}

Ainsi, on peut facilement accéder à l'année, au mois et au jour capturés à l'aide des noms de groupe, offrant des fonctionnalités similaires à la capture de groupes dans d'autres langues.

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