Heim >Backend-Entwicklung >Golang >Wie kann ich einen negativen Lookbehind in regulären Go-Ausdrücken simulieren?
Negative Lookbehind-Simulation in Go
In Go werden negative Lookbehind-Behauptungen aus Leistungsgründen nicht unterstützt. Dies kann beim Versuch, Muster mithilfe von Lookbehind-Operatoren abzugleichen, zu Herausforderungen führen.
Zum Beispiel könnte ein negativer Lookbehind verwendet werden, um einen Befehl aus einer Zeichenfolge zu extrahieren, wobei alle führenden Zeichen aus dem Satz [@#/] ausgeschlossen werden. Verwendung einer negativen Lookbehind-Behauptung:
\b(?<![@#\/])\w.*
Diese Regex lässt sich jedoch nicht in Go kompilieren, da die negative Lookbehind-Behauptung nicht unterstützt wird.
Alternativer Ansatz
Stattdessen können wir das negative Lookbehind durch einen negierten Zeichensatz ersetzen, der mit jedem Zeichen übereinstimmt, das nicht im enthalten ist gesetzt.
Aktualisierte Regex:
\b[^@#/]\w.*
Wenn führende Zeichen aus der Menge [@#/] am Anfang der Zeichenfolge zulässig sind, können wir die verwenden ^ Anker:
(?:^|[^@#\/])\b\w.*
Filterfunktion
Alternativ können wir verwenden eine Filterfunktion in Go, um Zeichenfolgen herauszufiltern, die mit Zeichen aus der Menge [@#/] beginnen.
func Filter(vs []string, f func(string) bool) []string { vsf := make([]string, 0) for _, v := range vs { if f(v) { vsf = append(vsf, v) } } return vsf }
Prozessfunktion
Wir können auch eine erstellen Prozessfunktion, die die Filterfunktion nutzt:
func Process(inp string) string { t := strings.Split(inp, " ") t = Filter(t, func(x string) bool { return strings.Index(x, "#") != 0 && strings.Index(x, "@") != 0 && strings.Index(x, "/") != 0 }) return strings.Join(t, " ") }
Diese Prozessfunktion kann verwendet werden, um Eingabezeichenfolgen zu transformieren und alle Wörter, die mit Zeichen beginnen, aus der Menge zu entfernen [@#/].
Das obige ist der detaillierte Inhalt vonWie kann ich einen negativen Lookbehind in regulären Go-Ausdrücken simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!