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!