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

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

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-26 12:37:09865parcourir

How Can I Use Capturing Groups in Go Regular Expressions?

Capturer des groupes dans les expressions régulières Go

Lors du portage du code de Ruby vers Go, les développeurs rencontrent souvent des problèmes de compatibilité avec les expressions régulières. Ruby prend en charge la capture de groupes dans les expressions régulières, une fonctionnalité non disponible nativement dans la bibliothèque RE2 de Go.

Réécriture des expressions pour Go

Pour émuler la fonctionnalité de capture de groupe, les étapes suivantes peuvent être pris :

1. Utiliser des groupes de capture nommés :
Au lieu d'utiliser des crochets angulaires, ajoutez « P » entre la parenthèse ouvrante et le nom du groupe, par exemple (?Pd{4}) pour le groupe d'années.

2. Noms des groupes de références croisées :
Utilisez la fonction regexp.SubexpNames() pour obtenir une liste des noms de groupes de capture.

3. Accédez aux données capturées :
Utilisez le nom de groupe approprié comme argument pour des fonctions telles que FindStringSubmatch pour récupérer les valeurs capturées.

Exemple :

package main

import (
    "fmt"
    "regexp"
)

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

Sortie :

Matched Substrings: [2015 05 27]
Group Names: [ Year Month Day ]

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