Heim >Backend-Entwicklung >Golang >Wie kann ich negative Lookbehind-Behauptungen in regulären Go-Ausdrücken simulieren?

Wie kann ich negative Lookbehind-Behauptungen in regulären Go-Ausdrücken simulieren?

Susan Sarandon
Susan SarandonOriginal
2024-12-01 00:35:12321Durchsuche

How Can I Simulate Negative Lookbehind Assertions in Go Regular Expressions?

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!

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