Maison >développement back-end >Golang >Comment puis-je simuler des assertions Lookbehind négatives dans des expressions régulières Go ?
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!