Lors de la tentative de compilation d'une expression régulière dans Go, les utilisateurs peuvent rencontrer l'erreur d'analyse suivante :
error parsing regexp: invalid or unsupported Perl syntax: (?!
Cette erreur est généralement générée lorsque vous essayez d'utiliser un opérateur de recherche (?!..., qui n'est pas pris en charge dans la syntaxe des expressions régulières de Go.
Les lookarounds sont un type spécial d'opérateur d'expression régulière utilisé pour faire correspondre un modèle uniquement s'il n'est pas immédiatement suivi ou précédé d'un autre modèle spécifique. Dans ce cas, (?! est utilisé pour vérifier si une chaîne donnée ne commence pas par le texte. "Activé".
Comme Go ne prend pas en charge les recherches, plusieurs solutions de contournement sont disponibles :
Utilisation d'expressions régulières séparées
Une approche consiste à utiliser deux expressions régulières distinctes :
nonOnRegex := regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$") onOnRegex := regexp.MustCompile("^On.*On\s.+?wrote:")
Vous pouvez ensuite vérifier si le nonOnRegex correspond à la chaîne et si le onOnRegex ne correspond pas pour déterminer le résultat souhaité.
Utilisation de groupes de capture facultatifs
Une autre solution de contournement consiste à utiliser un groupe de capture facultatif :
regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Après avoir fait correspondre la chaîne à l'aide de cette expression régulière, vous pouvez vérifier si la première le groupe de capture existe et se termine par "On". Si tel est le cas, renvoyez faux, sinon renvoyez vrai.
En implémentant l'une de ces solutions de contournement, vous pouvez reproduire efficacement la fonctionnalité des recherches dans la syntaxe des expressions régulières de Go.
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!