Maison >développement back-end >Golang >Comment puis-je simuler des assertions Lookbehind négatives dans Go ?

Comment puis-je simuler des assertions Lookbehind négatives dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-11-27 14:18:11449parcourir

How Can I Simulate Negative Lookbehind Assertions in Go?

Simulation des assertions Lookbehind négatives dans Go

Bien que les assertions Lookbehind négatives ne soient pas prises en charge nativement dans Go, il existe des méthodes alternatives pour obtenir des résultats similaires. Par exemple, lorsque l'on tente d'extraire des commandes comme "foo bar baz" tout en excluant celles avec des préfixes comme "@", "#" ou "/", on peut utiliser un jeu de caractères nié au lieu d'un lookbehind négatif.

Par exemple, l'expression régulière suivante correspond aux mots qui ne commencent pas par ces caractères :

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

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

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

Une autre approche consiste à utiliser une fonction de filtre pour supprimer les mots indésirables :

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
}

Ce filtre peut ensuite être combiné avec une fonction de traitement pour supprimer les mots avec des préfixes spécifiques, comme démontré ci-dessous :

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

En appliquant ces techniques de filtrage, on peut simuler un comportement de recherche négatif dans Go, permettant une correspondance et une extraction efficaces de données spécifiques. modèles.

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