Expressions régulières en langage Go

Une expression régulière (regex ou regexp en abrégé) est un outil puissant pour faire correspondre des chaînes de caractères.

Les expressions régulières définissent un motif qui permet de rechercher, remplacer ou extraire rapidement des chaînes correspondant à ce motif. Pour plus de détails, voirTutoriel sur les expressions régulières。

En Go, les expressions régulières sont gérées via leregexpImplémentez avec le package.


Dans le langage GoregexpPaquet

La bibliothèque standard Go fournitregexppackage, utilisé pour traiter les expressions régulières. Voici lesregexpfonctions et méthodes couramment utilisées dans le package :

  1. CompileetMustCompile
    Utilisé pour compiler les expressions régulières.Compilerenvoie un*Regexpun objet et une erreur, tandis queMustCompilepaniquera directement si la compilation échoue.

  2. MatchString
    Vérifie si une chaîne correspond à une expression régulière.

  3. FindStringetFindAllString
    Utilisé pour trouver les chaînes correspondantes.FindStringRenvoie la première correspondance,FindAllStringRenvoie toutes les correspondances.

  4. ReplaceAllString
    Utilisé pour remplacer les chaînes correspondantes.

  5. Split
    Découpe les chaînes en fonction de l'expression régulière.


Syntaxe de base des expressions régulières

Voici quelques syntaxes d'expressions régulières couramment utilisées :

  • .: correspond à un seul caractère (sauf saut de ligne).
  • *: correspond au caractère précédent 0 fois ou plus.
  • +: correspond au caractère précédent 1 fois ou plus.
  • ?: correspond au caractère précédent 0 ou 1 fois.
  • \d: correspond aux chiffres (équivalent à[0-9])。
  • \w: correspond aux lettres, chiffres ou traits de soulignement (équivalent à[a-zA-Z0-9_])。
  • \s: correspond aux caractères d'espacement (y compris les espaces, tabulations, sauts de ligne, etc.).
  • []: correspond à n'importe quel caractère entre crochets (par ex.[abc]correspondancea、bouc)。
  • ^: correspond au début de la chaîne.
  • $: correspond à la fin de la chaîne.

Exemple de code

Voici quelques exemples d'utilisation d'expressions régulières en Go :

Exemple 1 : Vérifier si une chaîne correspond à une expression régulière

Exemple

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `^[a-zA-Z0-9]+$`
    regex := regexp.MustCompile(pattern)

    str := "Hello123"
    if regex.MatchString(str) {
        fmt.Println("La chaîne correspond à l'expression régulière")
    } else {
        fmt.Println("La chaîne ne correspond pas à l'expression régulière")
    }
}

Exemple 2 : Recherche de chaînes correspondantes

Exemple

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `\d+`
    regex := regexp.MustCompile(pattern)

    str := "J'ai 3 pommes et 5 bananes"
    matches := regex.FindAllString(str, -1)
    fmt.Println("Nombres trouvés :", matches)
}

Exemple 3 : Remplacement des chaînes correspondantes

Exemple

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `\s+`
    regex := regexp.MustCompile(pattern)

    str := "Bonjour Monde"
    result := regex.ReplaceAllString(str, " ")
    fmt.Println("Replaced string:", result)
}

Exemple 4 : Découpage de chaînes

Exemple

package main

import (
    "fmt"
    "regexp"
)

func main() {
    pattern := `,`
    regex := regexp.MustCompile(pattern)

    str := "apple,banana,orange"
    parts := regex.Split(str, -1)
    fmt.Println("String after splitting:", parts)
}

Notes

  1. Problèmes de performance
    Les opérations de correspondance et de remplacement d'expressions régulières peuvent consommer des ressources considérables, en particulier lors du traitement de grandes quantités de données. Il est recommandé de les utiliser avec prudence dans les scénarios sensibles aux performances.

  2. Caractères d'échappement
    En Go, les barres obliques inverses dans les expressions régulières\doivent être écrites sous la forme\\, car la barre oblique inverse est aussi un caractère d'échappement dans les chaînes.

  3. Gestion des erreurs
    UtilisationCompilefonction, veillez à vérifier l'erreur renvoyée pour éviter les plantages du programme.

autres extensions