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
Freigeben: 2024-11-28 20:49:11
Original
459 Leute haben es durchsucht

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.*
Nach dem Login kopieren

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

\b[^@#/]\w.*
Nach dem Login kopieren

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

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

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
}
Nach dem Login kopieren

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, " ")
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage