Reguläre Ausdrücke in der Sprache Go
Ein regulärer Ausdruck (kurz regex oder regexp) ist ein leistungsstarkes Werkzeug zum Abgleichen von Zeichenketten.
Reguläre Ausdrücke definieren ein Muster, mit dem schnell Zeichenketten gesucht, ersetzt oder extrahiert werden können, die zu diesem Muster passen. Für Details sieheTutorial zu regulären Ausdrücken。
In Go werden reguläre Ausdrücke über dasregexpMit dem Paket implementieren.
In der Sprache GoregexpPaket
Die Go-Standardbibliothek bietetregexpPaket, das zum Verarbeiten regulärer Ausdrücke verwendet wird. Die folgendenregexpHäufig verwendete Funktionen und Methoden im Paket:
CompileundMustCompile
Wird zum Kompilieren regulärer Ausdrücke verwendet.Compilegibt ein*Regexpein Objekt und einen Fehler, währendMustCompilelöst direkt einen Panic aus, wenn die Kompilierung fehlschlägt.MatchString
Prüft, ob eine Zeichenkette mit einem regulären Ausdruck übereinstimmt.FindStringundFindAllString
Wird verwendet, um übereinstimmende Zeichenketten zu finden.FindStringGibt den ersten Treffer zurück,FindAllStringGibt alle Treffer zurück.ReplaceAllString
Wird verwendet, um übereinstimmende Zeichenketten zu ersetzen.Split
Teilt Zeichenketten basierend auf dem regulären Ausdruck auf.
Grundlegende Syntax regulärer Ausdrücke
Im Folgenden sind einige häufig verwendete Syntaxformen für reguläre Ausdrücke aufgeführt:
.: stimmt mit jedem einzelnen Zeichen überein (außer Zeilenumbruch).*: stimmt mit dem vorhergehenden Zeichen 0 oder mehr Mal überein.+: stimmt mit dem vorhergehenden Zeichen 1 oder mehr Mal überein.?: stimmt mit dem vorhergehenden Zeichen 0 oder 1 Mal überein.\d: stimmt mit Ziffernzeichen überein (äquivalent zu[0-9])。\w: stimmt mit Buchstaben, Ziffern oder Unterstrichen überein (äquivalent zu[a-zA-Z0-9_])。\s: stimmt mit Leerraumzeichen überein (einschließlich Leerzeichen, Tabs, Zeilenumbrüche usw.).[]: stimmt mit einem beliebigen Zeichen innerhalb der Klammern überein (z. B.[abc]Treffera、boderc)。^: stimmt mit dem Anfang der Zeichenkette überein.$: stimmt mit dem Ende der Zeichenkette überein.
Beispielcode
Im Folgenden finden Sie einige Beispiele für die Verwendung regulärer Ausdrücke in Go:
Beispiel 1: Prüfen, ob eine Zeichenkette mit einem regulären Ausdruck übereinstimmt
Beispiel
import (
"fmt"
"regexp"
)
func main() {
pattern := `^[a-zA-Z0-9]+$`
regex := regexp.MustCompile(pattern)
str := "Hello123"
if regex.MatchString(str) {
fmt.Println("String stimmt mit dem regulären Ausdruck überein")
} else {
fmt.Println("String stimmt nicht mit dem regulären Ausdruck überein")
}
}
Beispiel 2: Übereinstimmende Strings finden
Beispiel
import (
"fmt"
"regexp"
)
func main() {
pattern := `\d+`
regex := regexp.MustCompile(pattern)
str := "Ich habe 3 Äpfel und 5 Bananen"
matches := regex.FindAllString(str, -1)
fmt.Println("Gefundene Zahlen:", matches)
}
Beispiel 3: Übereinstimmende Strings ersetzen
Beispiel
import (
"fmt"
"regexp"
)
func main() {
pattern := `\s+`
regex := regexp.MustCompile(pattern)
str := "Hallo Welt"
result := regex.ReplaceAllString(str, " ")
fmt.Println("Ersetzte Zeichenkette:", result)
}
Beispiel 4: Zeichenketten aufteilen
Beispiel
import (
"fmt"
"regexp"
)
func main() {
pattern := `,`
regex := regexp.MustCompile(pattern)
str := "apple,banana,orange"
parts := regex.Split(str, -1)
fmt.Println("Zeichenkette nach dem Aufteilen:", parts)
}
Hinweise
Leistungsprobleme
Operationen zum Abgleichen und Ersetzen regulärer Ausdrücke können erhebliche Ressourcen verbrauchen, insbesondere bei der Verarbeitung großer Datenmengen. Es wird empfohlen, sie in leistungssensiblen Szenarien mit Vorsicht zu verwenden.Escape-Zeichen
In Go müssen Backslashes in regulären Ausdrücken\als\\geschrieben werden, da der Backslash auch ein Escape-Zeichen in Zeichenketten ist.Fehlerbehandlung
NutzungCompileFunktion, achten Sie darauf, den zurückgegebenen Fehler zu prüfen, um Programmabstürze zu vermeiden.