Recherche de correspondances de chaînes avec Regex dans Go
Cet article explore la tâche de récupération de toutes les correspondances d'une expression régulière donnée par rapport à une chaîne spécifiée. Nous allons examiner un exemple de chaîne et implémenter une solution à l'aide du package regexp de Go pour capturer les chaînes entourées d'accolades.
Énoncé du problème
Étant donné une chaîne :
{city}, {state} {zip}
Notre objectif est de renvoyer un tableau ou une tranche contenant toutes les correspondances de chaînes entre bouclés accolades.
Solution
Pour y parvenir, nous pouvons exploiter les expressions régulières pour définir le modèle souhaité. Cependant, il y a quelques modifications clés à apporter par rapport à la tentative initiale.
Tout d'abord, nous supprimons les délimiteurs d'expressions régulières ("/") car ils sont inutiles dans Go. Deuxièmement, nous utilisons des littéraux de chaîne bruts (indiqués par des backticks `) pour définir le modèle d'expression régulière. Cela nous permet d'utiliser une seule barre oblique inverse () pour échapper aux métacaractères regex. Enfin, puisque nous n'avons pas besoin de capturer les valeurs individuelles, nous pouvons simplifier le modèle d'expression régulière pour faire correspondre les chaînes entre accolades sans capturer les parenthèses.
Voici une version mise à jour du code :
r := regexp.MustCompile(`{[^{}]*}`) matches := r.FindAllString("{city}, {state} {zip}", -1)
Ce code renverra un tableau avec les correspondances suivantes :
["{city}", "{state}", "{zip}"]
Plongée Plus profond
Si nous voulons extraire uniquement les valeurs entre accolades, nous pouvons utiliser FindAllStringSubmatch avec un modèle d'expression régulière légèrement modifié qui inclut la capture des parenthèses :
r := regexp.MustCompile(`{([^{}]*)}`) matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
Dans ce modèle, ([^{}]*) est un groupe de capture qui correspond à n'importe quel nombre de caractères autres que les accolades. L'utilisation de FindAllStringSubmatch renverra un tableau de sous-correspondances pour chaque correspondance. Nous pouvons ensuite parcourir ces sous-correspondances pour obtenir les valeurs entre parenthèses.
Détails de l'expression régulière
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!