Maison >développement back-end >Golang >Comment puis-je obtenir une fonctionnalité d'analyse négative dans les expressions régulières Go ?

Comment puis-je obtenir une fonctionnalité d'analyse négative dans les expressions régulières Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-15 13:04:24412parcourir

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

Négation de Lookbehind dans Go : une solution

Dans Go, les assertions négatives de lookbehind ne sont pas prises en charge en raison de problèmes de performances. Pour surmonter ce défi, vous pouvez explorer des méthodes alternatives pour obtenir la même fonctionnalité.

L'expression régulière originale visait à extraire les commandes qui ne commençaient pas par les caractères @, # ou /. Voici deux options :

1. Jeu de caractères nié :

Supprimez le lookbehind négatif et remplacez-le par un jeu de caractères nié.

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

Si cela est autorisé au début de la chaîne, ancrez-le avec ^

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

2. Fonction de filtre :

Implémentez une fonction de filtre qui supprime les mots commençant par des caractères spécifiques.

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
}

Utilisez la fonction de filtre dans une fonction de traitement pour traiter le texte saisi.

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

Ces solutions offrent des alternatives au lookbehind négatif dans Go, garantissant un traitement efficace des regex.

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