Maison > développement back-end > Golang > Comment simuler des groupes de capture nommés dans les expressions régulières Go ?

Comment simuler des groupes de capture nommés dans les expressions régulières Go ?

Barbara Streisand
Libérer: 2024-12-19 11:08:17
original
487 Les gens l'ont consulté

How to Simulate Named Capturing Groups in Go Regular Expressions?

Comment émuler la capture de groupes dans les expressions régulières Go

Contrairement à Ruby et Java, qui utilisent des expressions régulières compatibles PCRE qui prennent en charge la capture groupes, Go utilise la bibliothèque RE2 de Google, qui ne propose pas nativement cette fonctionnalité. Cet article explique comment obtenir un effet similaire dans Go.

Considérez l'expression régulière Ruby suivante avec des groupes de capture :

(?<Year>\d{4})-(?<Month>\d{2})-(?<Day>\d{2})
Copier après la connexion

Ce modèle correspond à des chaînes de date telles que "2001-01-20". et capture les valeurs de l'année, du mois et du jour dans des groupes nommés accessibles via leurs noms, tels que ["Année"].

Pour émuler ce comportement dans Go, le préfixe « P » doit être ajouté pour capturer les noms de groupe :

(?P<Year>\d{4})-(?P<Month>\d{2})-(?P<Day>\d{2})
Copier après la connexion

Par exemple, le code Go suivant montre comment utiliser ce modèle modifié :

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

La fonction FindStringSubmatch renvoie les groupes capturés, tandis que SubexpNames fournit les noms des groupes de capture, vous permettant d'accéder à leurs valeurs.

En ajoutant le préfixe "P" pour capturer le groupe noms et en tirant parti de la fonction SubexpNames, il est possible d'émuler la fonctionnalité de capture de groupes dans les expressions régulières Ruby lorsque vous travaillez avec la bibliothèque RE2 de Go.

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