Heim >Backend-Entwicklung >Golang >Wie kann ich negative Lookbehind-Behauptungen in regulären Go-Ausdrücken simulieren?
Simulieren eines negativen Lookbehind in Go
Ihre ursprüngliche Regex mit einer negativen Lookbehind-Behauptung zielt darauf ab, Befehle ohne vorangestelltes @, #, oder / Zeichen. Allerdings unterstützt Go keine negativen Lookbehinds, was eine Hürde bei der Implementierung dieses Musters darstellt.
Regex neu schreiben
Um die gleiche Funktionalität ohne negative Lookbehinds zu erreichen, können wir ersetzen die Zeichen, die innerhalb des Zeichensatzes ausgeschlossen werden sollen:
[^@#/]\w.*
Wenn Befehle nicht mit diesen Zeichen beginnen dürfen, können wir dies tun Verwenden Sie den ^-Anker, um diese Bedingung zu erzwingen:
(?:^|[^@#\/])\b\w.*
Alternativer Ansatz mit Go-Funktionen
Alternativ können Sie Go-Funktionen verwenden, um die Eingabezeichenfolge zu filtern und zu verarbeiten:
func Filter(vs []string, f func(string) bool) []string { ... } 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, " ") }
Dieser Ansatz nutzt eine Filterfunktion, um Wörter auszuschließen, die mit den angegebenen Zeichen beginnen, und fügt dann die verbleibenden Wörter wieder zu einer neuen Zeichenfolge zusammen. Eine funktionierende Demonstration auf dem Go-Spielplatz finden Sie unter http://play.golang.org/p/ntJRNxJTxo.
Das obige ist der detaillierte Inhalt vonWie kann ich negative Lookbehind-Behauptungen in regulären Go-Ausdrücken simulieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!