Heim >Backend-Entwicklung >Golang >Wie kann ich eine negative Lookbehind-Funktionalität in regulären Go-Ausdrücken erreichen?

Wie kann ich eine negative Lookbehind-Funktionalität in regulären Go-Ausdrücken erreichen?

Susan Sarandon
Susan SarandonOriginal
2024-12-15 13:04:24413Durchsuche

How Can I Achieve Negative Lookbehind Functionality in Go Regular Expressions?

Negatives Lookbehind in Go: Eine Lösung

In Go werden negative Lookbehind-Behauptungen aufgrund von Leistungsbedenken nicht unterstützt. Um diese Herausforderung zu meistern, können Sie alternative Methoden erkunden, um die gleiche Funktionalität zu erreichen.

Der ursprüngliche reguläre Ausdruck zielte darauf ab, Befehle zu extrahieren, die nicht mit den Zeichen @, # oder / begannen. Hier gibt es zwei Möglichkeiten:

1. Negierter Zeichensatz:

Entfernen Sie das negative Lookbehind und ersetzen Sie es durch einen negierten Zeichensatz.

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

Wenn es am Anfang der Zeichenfolge zulässig ist, verankern Sie es mit ^

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

2. Filterfunktion:

Implementieren Sie eine Filterfunktion, die Wörter entfernt, die mit bestimmten Zeichen 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
}

Verwenden Sie die Filterfunktion in einer Prozessfunktion, um Eingabetext zu verarbeiten.

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 Lösungen bieten Alternativen zum negativen Lookbehind in Go und gewährleisten eine effiziente Regex-Verarbeitung.

Das obige ist der detaillierte Inhalt vonWie kann ich eine negative Lookbehind-Funktionalität in regulären Go-Ausdrücken erreichen?. 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