Maison >développement back-end >Golang >Comment contourner les recherches dans les expressions régulières Go ?

Comment contourner les recherches dans les expressions régulières Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-12 19:47:021092parcourir

How to Workaround Lookarounds in Go Regular Expressions?

Erreur d'analyse d'expression régulière : syntaxe Perl invalide ou non prise en charge (?!

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.

Comprendre les recherches

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é".

Solution de contournement Go Regexp

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!

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