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})
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})
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()) }
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!