Maison >développement back-end >Golang >Comment extraire toutes les sous-chaînes entourées d'accolades à l'aide de l'expression régulière de Go ?

Comment extraire toutes les sous-chaînes entourées d'accolades à l'aide de l'expression régulière de Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-25 09:56:31924parcourir

How to Extract All Substrings Enclosed in Curly Braces Using Go's Regex?

Recherche de toutes les correspondances de chaînes à l'aide de Regex dans Go

Lorsque vous travaillez avec des chaînes dans Go, il est souvent nécessaire de trouver des modèles ou des sous-chaînes spécifiques. Les expressions régulières offrent un moyen puissant de faire correspondre et de manipuler du texte. Une tâche courante consiste à trouver toutes les correspondances d'un modèle particulier et à les stocker dans une tranche ou un tableau.

Énoncé du problème :

Étant donné une chaîne contenant des accolades entourant des sous-chaînes , le but est d'extraire toutes les sous-chaînes entre les accolades et de les renvoyer sous forme de tableau. Par exemple, étant donné la chaîne :

{city}, {state} {zip}

Nous devons renvoyer un tableau contenant :

  • {city}
  • {state}
  • {zip}

Solution :

À pour y parvenir, nous pouvons utiliser le package regexp de Go. Cependant, il y a quelques points clés à noter lors de la définition de l'expression régulière :

  • Évitez les délimiteurs Regex : Dans Go, les expressions régulières ne sont pas entourées de barres obliques (/) par par défaut.
  • Utiliser des littéraux de chaîne bruts : Lors de la définition d'un modèle d'expression régulière complexe, il est conseillé d'utiliser des littéraux bruts des chaînes littérales (préfixées par des guillemets ``) pour échapper aux caractères spéciaux avec une seule barre oblique inverse.
  • Capture de groupes : Les groupes de capture peuvent être utilisés pour extraire des parties spécifiques d'une correspondance. Cependant, pour ce problème, nous pouvons simplifier les expressions régulières et éviter de les utiliser.

Voici le code Go mis à jour :

package main

import (
    "fmt"
    "regexp"
)

func main() {
    str := "{city}, {state} {zip}"

    // Define the regular expression pattern
    r := regexp.MustCompile(`{[^{}]*}`)

    // Find all matches
    matches := r.FindAllString(str, -1)

    // Print the matches
    for _, match := range matches {
        fmt.Println(match)
    }
}

Répartition des expressions régulières :

  • {[^{}]*} : correspond à n'importe quelle sous-chaîne entourée de curl accolades.

Sortie :

  • {city}
    {state}

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!

Déclaration:
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