Heim Backend-Entwicklung Golang Einführung und Anwendung regulärer Ausdrücke in der Go-Sprache

Einführung und Anwendung regulärer Ausdrücke in der Go-Sprache

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

In der Go-Sprache sind reguläre Ausdrücke ein leistungsstarkes Werkzeug, das uns dabei helfen kann, Zeichenfolgen zu verarbeiten, Text abzugleichen, nach bestimmten Zeichen zu suchen usw. In diesem Artikel werden die grundlegende Syntax regulärer Ausdrücke in der Go-Sprache und deren Verwendung in praktischen Anwendungen vorgestellt.

1. Einführung in reguläre Ausdrücke

Reguläre Ausdrücke sind eine Sprache, die speziell zur Beschreibung von Zeichenfolgenmustern verwendet wird. Sie definieren ein bestimmtes Muster durch eine Kombination bestimmter Symbole und Zeichen Muster. In der Go-Sprache können wir reguläre Ausdrücke verwenden, um schnell Zeichenfolgen abzugleichen oder zu finden, die einem bestimmten Muster entsprechen. Die Implementierung regulärer Ausdrücke in der Go-Sprache basiert hauptsächlich auf dem Regexp-Paket der regulären Ausdrucksbibliothek. Wenn wir es verwenden, müssen wir das Regexp-Paket importieren und dann reguläre Ausdrücke über verwandte Funktionen schreiben und ausführen.

2. Grundlegende Syntax regulärer Ausdrücke

  1. String-Matching

Verwenden Sie in der Go-Sprache reguläre Ausdrücke als Ausdrücke werden für den String-Abgleich verwendet, hauptsächlich werden die folgenden Symbole verwendet:

Symbolbedeutung
Entspricht jedem Zeichen außer Zeilenumbrüchen
[] entspricht jedem Zeichen in eckigen Klammern
|. Entspricht einer beliebigen Zeichenfolge auf beiden Seiten der linken und rechten horizontalen Linie.
^ Entspricht einer Zeichenfolge, die mit einer bestimmten Zeichenfolge beginnt.
$ Entspricht einer Zeichenfolge, die mit einer bestimmten Zeichenfolge endet.

# 🎜🎜#
    Stimmt 0 oder mehr Mal mit dem vorherigen Ausdruck überein
  • Stimmt 1 oder mehr Mal mit dem vorherigen Ausdruck überein
  • Stimmt 0 oder 1 Mal mit dem vorherigen Ausdruck überein
  • # 🎜🎜#Beispiel:

regexp.MustCompile(ab*e) // Übereinstimmung mit „a“, „ab“, „abb“, „abbb“ usw.# 🎜🎜#regexp.MustCompile(ab+e) // Entspricht „abe“, „abbbe“, „abbbbe“ usw., aber nicht „ae“, „abe“ „etc#“ 🎜🎜#regexp.MustCompile(ab?e) // Entspricht „ae“, „abe“ usw., aber nicht „abbe“, „abbbbe“ usw.

#🎜 🎜#

String-Ersetzungab*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]+

Zusätzlich zum String-Matching können auch reguläre Ausdrücke zum String-Ersetzen verwendet werden. In der Go-Sprache können wir die Funktion „ReplaceAllString“ verwenden, um Ersetzungsvorgänge durchzuführen:


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

where , src stellt die Quellzeichenfolge dar, Muster stellt den zu ersetzenden regulären Ausdruck dar und repl stellt die ersetzte Zeichenfolge dar. Ein Beispiel ist wie folgt:

str := "abcde1234"

pattern := [0-9]+
    repl := "x" #🎜🎜 #
  1. r, _ := regexp.Compile(pattern)
  2. result := r.ReplaceAllString(str, repl) // Das Ergebnis nach dem Ersetzen ist „abcde“
#🎜 🎜#三, Die tatsächliche Verwendung regulärer Ausdrücke

In tatsächlichen Anwendungen werden reguläre Ausdrücke normalerweise in den folgenden Szenarien verwendet:

Benutzereingaben überprüfen#🎜🎜 #

    Um die Gültigkeit und Sicherheit der Daten zu gewährleisten, müssen wir bei der Benutzerregistrierung, Anmeldung und anderen Szenarien normalerweise die Benutzereingaben überprüfen. An dieser Stelle können reguläre Ausdrücke verwendet werden, um die vom Benutzer eingegebenen Daten zu überprüfen. Beispielsweise können wir reguläre Ausdrücke verwenden, um zu überprüfen, ob das vom Benutzer eingegebene E-Mail-Format korrekt ist:
  1. func IsEmail(email string) bool {
reg := `[a-zA-Z0-9_-]+@[a-zA-Z0-9_-]+(.[a-zA-Z0-9_-]+)+$`
r := regexp.MustCompile(reg)
return r.MatchString(email)
Nach dem Login kopieren

}#🎜🎜 ##🎜 🎜#

Textinformationen extrahieren

Bei großen Textmengen müssen wir möglicherweise bestimmte spezifische Informationen extrahieren, z. B. URL-Links, Mobiltelefonnummern usw . An dieser Stelle können reguläre Ausdrücke verwendet werden, um diese Informationen zu finden und zu extrahieren. Beispielsweise können wir reguläre Ausdrücke verwenden, um alle URL-Links in einer Zeichenfolge zu extrahieren:

    func GetUrls(text string) []string {
  1. reg := `https?://[^s]+`
    r := regexp.MustCompile(reg)
    return r.FindAllString(text, -1)
    Nach dem Login kopieren
  2. }#🎜🎜 ## 🎜🎜#
Sensible Informationen filtern

In einigen Anwendungsszenarien müssen wir einige sensible Informationen wie Bankkartennummern, Passwörter usw. herausfiltern. An dieser Stelle können reguläre Ausdrücke verwendet werden, um diese sensiblen Informationen herauszufiltern und zu verarbeiten. Beispielsweise können wir einen regulären Ausdruck verwenden, um alle Mobiltelefonnummern in einer Zeichenfolge auszublenden:

func HidePhone(text string) string {

reg := `1d{10}`
r := regexp.MustCompile(reg)
return r.ReplaceAllString(text, "****")
Nach dem Login kopieren

}

# 🎜🎜#4. Zusammenfassung

Regulärer Ausdruck ist ein leistungsstarkes Tool, das uns helfen kann, Zeichenfolgen zu verarbeiten, Text abzugleichen, nach bestimmten Zeichen zu suchen usw. In der Go-Sprache können wir mithilfe des Regexp-Pakets reguläre Ausdrücke bequemer schreiben und ausführen. In praktischen Anwendungen werden reguläre Ausdrücke häufig bei Benutzereingaben, Textextraktion, Informationsfilterung und anderen Szenarien verwendet, was uns dabei helfen kann, Aufgaben effizienter zu erledigen. #🎜🎜#

Das obige ist der detaillierte Inhalt vonEinführung und Anwendung regulärer Ausdrücke in der Go-Sprache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Welche Bibliotheken werden für die Operationen der schwimmenden Punktzahl in Go verwendet? Apr 02, 2025 pm 02:06 PM

In der Bibliothek, die für den Betrieb der Schwimmpunktnummer in der GO-Sprache verwendet wird, wird die Genauigkeit sichergestellt, wie die Genauigkeit ...

Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Was ist das Problem mit Warteschlangen -Thread in Go's Crawler Colly? Apr 02, 2025 pm 02:09 PM

Das Problem der Warteschlange Threading In Go Crawler Colly untersucht das Problem der Verwendung der Colly Crawler Library in Go -Sprache. Entwickler stoßen häufig auf Probleme mit Threads und Anfordern von Warteschlangen. � ...

Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Warum hat das Drucken von Saiten mit Println und String () -Funktionen unterschiedliche Effekte? Apr 02, 2025 pm 02:03 PM

Der Unterschied zwischen Stringdruck in GO -Sprache: Der Unterschied in der Wirkung der Verwendung von Println und String () ist in Go ...

Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Wie löste ich das Problem des Typs des user_id -Typs bei der Verwendung von Redis -Stream, um Nachrichtenwarteschlangen in GO -Sprache zu implementieren? Apr 02, 2025 pm 04:54 PM

Das Problem der Verwendung von RETISTREAM zur Implementierung von Nachrichtenwarteschlangen in der GO -Sprache besteht darin, die Go -Sprache und Redis zu verwenden ...

Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Was ist der Unterschied zwischen 'var' und 'Typ' Typenwort Definition in der GO -Sprache? Apr 02, 2025 pm 12:57 PM

Zwei Möglichkeiten, Strukturen in der GO -Sprache zu definieren: Der Unterschied zwischen VAR- und Typ -Schlüsselwörtern. Bei der Definition von Strukturen sieht die Sprache oft zwei verschiedene Schreibweisen: Erstens ...

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Apr 02, 2025 pm 05:09 PM

Was soll ich tun, wenn die benutzerdefinierten Strukturbezeichnungen in Goland nicht angezeigt werden? Bei der Verwendung von Goland für GO -Sprachentwicklung begegnen viele Entwickler benutzerdefinierte Struktur -Tags ...

Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Welche Bibliotheken in GO werden von großen Unternehmen entwickelt oder von bekannten Open-Source-Projekten bereitgestellt? Apr 02, 2025 pm 04:12 PM

Welche Bibliotheken in GO werden von großen Unternehmen oder bekannten Open-Source-Projekten entwickelt? Bei der Programmierung in Go begegnen Entwickler häufig auf einige häufige Bedürfnisse, ...

Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Warum gibt es bei Verwendung von SQL.Open keinen Fehler an, wenn DSN leer ist? Apr 02, 2025 pm 12:54 PM

Warum meldet der DSN bei Verwendung von SQL.Open keinen Fehler? In Go Language, Sql.open ...

See all articles