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
Libérer: 2024-12-31 02:06:14
original
830 Les gens l'ont consulté

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})
Copier après la connexion

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())
}
Copier après la connexion

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

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!

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