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

Comment puis-je simuler des assertions Lookbehind négatives dans des expressions régulières Go ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-01 00:35:12366parcourir

How Can I Simulate Negative Lookbehind Assertions in Go Regular Expressions?

Simulation d'un lookbehind négatif dans Go

Votre regex originale, comportant une assertion de lookbehind négative, vise à extraire des commandes sans aucun précédent @, #, ou / caractères. Cependant, Go ne prend pas en charge les lookbehinds négatifs, ce qui constitue un obstacle à la mise en œuvre de ce modèle.

Réécriture de l'expression régulière

Pour obtenir la même fonctionnalité sans lookbehinds négatifs, nous pouvons remplacer les caractères à exclure dans le jeu de caractères :

[^@#/]\w.*

Si les commandes ne sont pas autorisées à commencer par ces caractères, nous pouvons utiliser l'ancre ^ pour appliquer cette condition :

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

Approche alternative utilisant les fonctions Go

Vous pouvez également envisager d'utiliser les fonctions Go pour filtrer et traiter la chaîne d'entrée :

func Filter(vs []string, f func(string) bool) []string { ... }

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

Cette approche exploite une fonction de filtre pour exclure les mots commençant par les caractères spécifiés, puis réassemble les mots restants dans une nouvelle chaîne. Vous pouvez trouver une démonstration fonctionnelle sur le terrain de jeu Go sur http://play.golang.org/p/ntJRNxJTxo.

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