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!