Maison développement back-end Golang Introduction et application des expressions régulières en langage Go

Introduction et application des expressions régulières en langage Go

Jun 03, 2023 am 09:01 AM
正则表达式 go语言 应用

Dans le langage Go, les expressions régulières sont un outil puissant qui peut nous aider à traiter des chaînes, à faire correspondre du texte, à rechercher des caractères spécifiés, etc. Cet article présentera la syntaxe de base des expressions régulières en langage Go et comment les utiliser dans des applications pratiques.

1. Introduction aux expressions régulières

Les expressions régulières sont un langage spécifiquement utilisé pour décrire des modèles de chaînes. Elles définissent un certain modèle à travers une combinaison de symboles et de caractères spécifiques. modèle. Dans le langage Go, nous pouvons utiliser des expressions régulières pour faire correspondre ou trouver rapidement des chaînes qui correspondent à un certain modèle. L’implémentation des expressions régulières dans le langage Go repose principalement sur le package regexp de la bibliothèque d’expressions régulières. Lors de son utilisation, nous devons importer le package regexp, puis écrire et exécuter des expressions régulières via les fonctions associées.

2. Syntaxe de base des expressions régulières

  1. Correspondance de chaînes

En langage Go, utilisez des expressions régulières Lorsque les expressions sont utilisés pour la correspondance de chaînes, les symboles suivants sont principalement utilisés :

Signification du symbole
Correspond à n'importe quel caractère à l'exception des sauts de ligne
[] correspond à n'importe quel caractère entre crochets
. | Correspond à n'importe quelle chaîne des deux côtés des lignes horizontales gauche et droite
^ Correspond à une chaîne commençant par une certaine chaîne
$ Correspond à une chaîne se terminant par une certaine chaîne

# 🎜🎜##🎜 🎜# Correspond à l'expression précédente 0 fois ou plus
  • Correspond à l'expression précédente 1 fois ou plus
  • Correspond à l'expression précédente 0 ou 1 fois

  • #🎜🎜? #Exemple :
regexp.MustCompile(ab*e) // Correspond à "a", "ab", "abb ", "abbb", etc.#🎜🎜 #regexp.MustCompile(ab+e) // Correspond à "abe", "abbbe", "abbbbe", etc., mais ne correspond pas à "ae", "abe" "etc#🎜🎜 #regexp.MustCompile(ab?e) // Correspond à "ae", "abe", etc., mais ne correspond pas à "abbe", "abbbbe", etc.

#🎜 🎜#

Remplacement de chaîne

ab*e) // 匹配"a"、"ab"、"abb"、"abbb"等
regexp.MustCompile(ab+e) // 匹配"abe"、"abbbe"、"abbbbe"等,但不匹配"ae"、"abe"等
regexp.MustCompile(ab?e) // 匹配"ae"、"abe"等,但不匹配"abbe"、"abbbbe"等

  1. 字符串替换

除了进行字符串匹配外,正则表达式也可以用于字符串替换。在Go语言中,我们可以使用ReplaceAllString函数来进行替换操作,其函数原型为:

func ReplaceAllString(src string, pattern string, repl string) string

其中,src表示源字符串,pattern表示要替换的正则表达式,repl表示替换后的字符串。示例如下:

str := "abcde1234"
pattern := [0-9]+
En plus de la correspondance de chaîne, les expressions régulières peuvent également être utilisées pour le remplacement de chaîne. En langage Go, nous pouvons utiliser la fonction ReplaceAllString pour effectuer des opérations de remplacement. Son prototype de fonction est :

func ReplaceAllString(src string, pattern string, repl string) string

where. , src représente la chaîne source, pattern représente l'expression régulière à remplacer et repl représente la chaîne remplacée. Un exemple est le suivant :

str := "abcde1234"

pattern := [0-9]+

repl := "x" #🎜🎜 #
    r, _ := regexp.Compile(pattern)
  1. result := r.ReplaceAllString(str, repl) // Le résultat après remplacement est "abcde"
  2. #🎜 🎜#三, L'utilisation réelle des expressions régulières

Dans les applications réelles, les expressions régulières sont généralement utilisées dans les scénarios suivants :

Vérifier les entrées de l'utilisateur#🎜🎜 #

Dans l'enregistrement des utilisateurs, la connexion et d'autres scénarios, afin de garantir la validité et la sécurité des données, nous devons généralement vérifier les entrées de l'utilisateur. À ce stade, des expressions régulières peuvent être utilisées pour vérifier les données saisies par l'utilisateur. Par exemple, nous pouvons utiliser des expressions régulières pour vérifier si le format d'e-mail saisi par l'utilisateur est correct :
  1. func IsEmail(email string) bool {
  2. reg := `[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$`
    r := regexp.MustCompile(reg)
    return r.MatchString(email)
    Copier après la connexion
}#🎜🎜 ##🎜 🎜#

Extraire des informations textuelles

Dans une grande quantité de texte, nous pouvons avoir besoin d'extraire certaines informations spécifiques, telles que des liens URL, des numéros de téléphone mobile, etc. . À ce stade, des expressions régulières peuvent être utilisées pour localiser et extraire ces informations. Par exemple, nous pouvons utiliser des expressions régulières pour extraire tous les liens URL dans une chaîne :

func GetUrls(text string) []string {
    reg := `https?://[^s]+`
    r := regexp.MustCompile(reg)
    return r.FindAllString(text, -1)
    Copier après la connexion
  1. }#🎜🎜 ## 🎜🎜#
  2. Filtrer les informations sensibles

Dans certains scénarios d'application, nous devons filtrer certaines informations sensibles, telles que les numéros de carte bancaire, les mots de passe, etc. À ce stade, vous pouvez utiliser des expressions régulières pour filtrer ces informations sensibles et les traiter. Par exemple, nous pouvons utiliser une expression régulière pour masquer tous les numéros de téléphone portable dans une chaîne :

func HidePhone(text string) string {

reg := `1d{10}`
r := regexp.MustCompile(reg)
return r.ReplaceAllString(text, "****")
Copier après la connexion
}

# 🎜🎜#4. Résumé

L'expression régulière est un outil puissant qui peut nous aider à traiter des chaînes, à faire correspondre du texte, à rechercher des caractères spécifiés, etc. Dans le langage Go, en utilisant le package regexp, nous pouvons écrire et exécuter des expressions régulières plus facilement. Dans les applications pratiques, les expressions régulières sont largement utilisées dans la saisie utilisateur, l'extraction de texte, le filtrage des informations et d'autres scénarios, ce qui peut nous aider à accomplir des tâches plus efficacement.

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 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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Quel est le problème avec le fil de file d'attente dans GO's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Quelles bibliothèques sont utilisées pour les opérations du numéro de point flottantes en Go? Apr 02, 2025 pm 02:06 PM

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Dans Go, pourquoi les chaînes d'impression avec println et string () ont-elles des effets différents? Apr 02, 2025 pm 02:03 PM

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Comment résoudre le problème de conversion de type user_id lors de l'utilisation du flux redis pour implémenter les files d'attente de messages dans le langage Go? Apr 02, 2025 pm 04:54 PM

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Quelle est la différence entre la structure de définition des mots clés `var` et« type »dans le langage Go? Apr 02, 2025 pm 12:57 PM

Deux façons de définir les structures dans le langage GO: la différence entre les mots clés VAR et le type. Lorsque vous définissez des structures, GO Language voit souvent deux façons d'écrire différentes: d'abord ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Apr 02, 2025 pm 05:09 PM

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Quelles bibliothèques de GO sont développées par de grandes entreprises ou fournies par des projets open source bien connus? Apr 02, 2025 pm 04:12 PM

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Lorsque vous utilisez SQL.Open, pourquoi ne signale pas une erreur lorsque DSN passe vide? Apr 02, 2025 pm 12:54 PM

Lorsque vous utilisez SQL.Open, pourquoi le DSN ne signale-t-il pas une erreur? En langue go, sql.open ...

See all articles