Maison > développement back-end > Golang > Comment puis-je extraire toutes les chaînes entourées d'accolades d'une chaîne à l'aide du package Regexp de Go ?

Comment puis-je extraire toutes les chaînes entourées d'accolades d'une chaîne à l'aide du package Regexp de Go ?

Linda Hamilton
Libérer: 2025-01-04 04:21:40
original
349 Les gens l'ont consulté

How Can I Extract All Strings Enclosed in Curly Braces from a String Using Go's Regexp Package?

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}
Copier après la connexion

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)
Copier après la connexion

Ce code renverra un tableau avec les correspondances suivantes :

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

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)
Copier après la connexion

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

  • { - Accolade gauche littérale
  • ([^{}]*) - Capture d'un groupe correspondant à zéro ou plusieurs caractères à l'exclusion des accolades
  • } - Accolade droite 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