Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich negative Lookbehind-Behauptungen in Go simulieren?

Wie kann ich negative Lookbehind-Behauptungen in Go simulieren?

Linda Hamilton
Linda HamiltonOriginal
2024-11-27 14:18:11428Durchsuche

How Can I Simulate Negative Lookbehind Assertions in Go?

Simulieren negativer Lookbehind-Behauptungen in Go

Während negative Lookbehind-Behauptungen in Go nicht nativ unterstützt werden, gibt es alternative Methoden, um ähnliche Ergebnisse zu erzielen. Wenn Sie beispielsweise versuchen, Befehle wie „foo bar baz“ zu extrahieren und dabei Befehle mit Präfixen wie „@“, „#“ oder „/“ auszuschließen, können Sie einen negierten Zeichensatz anstelle eines negativen Lookbehind verwenden.

Zum Beispiel stimmt der folgende reguläre Ausdruck mit Wörtern überein, die nicht mit diesen Zeichen beginnen:

\b[^@#/]\w.*

Wenn auch Zeichen am Anfang der Zeichenfolge stehen können, kann dies der ^-Anker sein verwendet:

(?:^|[^@#\/])\b\w.*

Ein anderer Ansatz besteht darin, eine Filterfunktion zu verwenden, um unerwünschte Wörter zu entfernen:

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
}

Dieser Filter kann dann mit einer Verarbeitungsfunktion kombiniert werden, um Wörter mit bestimmten Präfixen zu entfernen, wie z unten demonstriert:

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, " ")
}

Durch die Anwendung dieser Filtertechniken kann man negatives Lookbehind-Verhalten in Go simulieren und so eine effiziente Zuordnung und Extraktion spezifischer Elemente ermöglichen Muster.

Das obige ist der detaillierte Inhalt vonWie kann ich negative Lookbehind-Behauptungen in Go 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