Heim >Backend-Entwicklung >Golang >Wie kann ich negative Lookbehinds in regulären Go-Ausdrücken emulieren?

Wie kann ich negative Lookbehinds in regulären Go-Ausdrücken emulieren?

DDD
DDDOriginal
2024-11-28 20:49:11442Durchsuche

How Can I Emulate Negative Lookbehinds in Go Regular Expressions?

Emulierung negativer Lookbehinds in Go

Während Go aus Leistungsgründen keine negativen Lookbehinds in regulären Ausdrücken nativ unterstützt, kann eine alternative Strategie verwendet werden, um eine ähnliche Funktionalität zu erreichen.

Betrachten Sie den ursprünglichen regulären Ausdruck:

\b(?<![@#\/])\w.*

Seit dem negiertes Lookbehind untersucht nur einen Zeichensatz, er kann durch einen negierten Zeichensatz selbst ersetzt werden:

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

Wenn Zeichen am Anfang der Zeichenfolge erscheinen dürfen, fügen Sie den ^-Anker hinzu:

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

Für einen verfeinerten Ansatz kann eine Filterfunktion implementiert werden:

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
}

Diese Filterfunktion kann dann in einem Prozess eingesetzt werden Funktion:

func Process(inp string) string {
    t := strings.Split(inp, " ")
    t = Filter(t, func(x string) bool {
        return strings.Index(x, "#") != 0 &amp;&amp;
            strings.Index(x, "@") != 0 &amp;&amp;
            strings.Index(x, "/") != 0
    })
    return strings.Join(t, " ")
}

Insgesamt ermöglichen diese Techniken die Emulation negativer Lookbehinds in Go und bieten eine Problemumgehung für die fehlende direkte Sprachunterstützung für diese Funktion.

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