Maison > développement back-end > Golang > Comment extraire les correspondances de chaînes entourées d'accolades à l'aide du package `regexp` de Go ?

Comment extraire les correspondances de chaînes entourées d'accolades à l'aide du package `regexp` de Go ?

Susan Sarandon
Libérer: 2024-12-18 16:29:10
original
281 Les gens l'ont consulté

How to Extract String Matches Enclosed in Curly Braces Using Go's `regexp` Package?

Récupérer les correspondances de chaînes avec des expressions régulières dans Go

Dans Go, le package regexp offre la possibilité de rechercher des correspondances dans des chaînes en fonction des expressions. Ce guide illustre comment extraire un tableau de correspondances d'une chaîne donnée contenant des segments spécifiques entourés d'accolades.

Problème :

Vous disposez d'une chaîne contenant ce qui suit pattern :

{city}, {state} {zip}
Copier après la connexion

Votre objectif est d'obtenir un tableau contenant toutes les sous-chaînes qui apparaissent entre les accolades. Malgré l'utilisation du package regexp, vous rencontrez des difficultés pour obtenir le résultat souhaité.

Solution :

Pour résoudre ce problème, envisagez les étapes suivantes :

  1. Éliminez les délimiteurs Regex : Supprimez les barres obliques enveloppant le régulier expression.
  2. Utiliser des littéraux de chaîne brute : Définissez l'expression régulière à l'aide de littéraux de chaîne brute, désignés par des guillemets ``, qui vous permettent d'échapper aux métacaractères regex avec une seule barre oblique inverse.
  3. Supprimer le groupe de capture : Dans ce cas, le groupe de capture {([^{}]*)} n'est pas nécessaire car vous n'avez besoin que des chaînes entre les accolades. Par conséquent, vous pouvez utiliser le modèle simplifié {[^}]*}.

Pour récupérer toutes les correspondances, utilisez FindAllString :

r := regexp.MustCompile(`{[^{}]*}`)
matches := r.FindAllString("{city}, {state} {zip}", -1)
Copier après la connexion

Pour capturer uniquement les parties entre les boucles accolades, utilisez FindAllStringSubmatch avec un modèle contenant des parenthèses de capture :

r := regexp.MustCompile(`{([^{}]*)}`)
matches := r.FindAllStringSubmatch("{city}, {state} {zip}", -1)
for _, v := range matches {
    fmt.Println(v[1])
}
Copier après la connexion

Regex Répartition :

  • { - Correspond à une accolade ouverte littérale.
  • {[^{}]*} - Capture tous les caractères à l'exception des accolades bouclées et les stocke dans un group.
  • ([^{}]*) - Semblable à ci-dessus, mais la partie capturée est attribuée au groupe 1.
  • } - Correspond à une accolade proche littérale.

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