Maison >développement back-end >Golang >Comment puis-je simuler des assertions Lookbehind négatives dans 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!