Maison >développement back-end >Golang >Comment puis-je émuler des lookbehinds négatifs dans les expressions régulières Go ?

Comment puis-je émuler des lookbehinds négatifs dans les expressions régulières Go ?

DDD
DDDoriginal
2024-11-28 20:49:11443parcourir

How Can I Emulate Negative Lookbehinds in Go Regular Expressions?

Émulation des lookbehinds négatifs dans Go

Bien que Go ne prenne pas en charge nativement les lookbehinds négatifs dans les expressions régulières pour des raisons de performances, une stratégie alternative peut être utilisée pour obtenir des fonctionnalités similaires.

Considérez l'expression régulière originale :

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

Depuis le le lookbehind nié examine uniquement un jeu de caractères, il peut être remplacé par un jeu de caractères nié lui-même :

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

Si des caractères peuvent apparaître au début de la chaîne, ajoutez l'ancre ^ :

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

Pour une approche plus fine, une fonction de filtre peut être implémentée :

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
}

Cette fonction de filtre peut ensuite être employée dans un Processus function :

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

Dans l'ensemble, ces techniques permettent l'émulation de lookbehinds négatifs dans Go, fournissant ainsi une solution de contournement au manque de prise en charge linguistique directe pour cette fonctionnalité.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn