Maison > développement back-end > Golang > Comment contourner les lookarounds dans Go Regex ?

Comment contourner les lookarounds dans Go Regex ?

Barbara Streisand
Libérer: 2024-11-30 16:45:11
original
203 Les gens l'ont consulté

How to Work Around Lookarounds in Go Regex?

Erreur d'analyse de l'expression régulière : syntaxe Perl invalide (?!

Lors de la tentative d'utilisation d'une expression régulière dans Go, une erreur est rencontrée :

error parsing regexp: invalid or unsupported Perl syntax: (?!
Copier après la connexion

Cette erreur se produit spécifiquement avec les éléments suivants regex :

regexp.MustCompile("^(?!On.*On\s.+?wrote:)(On\s(.+?)wrote:)$")
Copier après la connexion

Solution

Le problème se pose car Go regex ne prend pas en charge les lookarounds, contrairement aux Lookarounds qui sont des assertions qui vérifient le texte environnant sans le consommer.

Pour contourner cette limitation, utilisez une approche différente :

Tout d'abord, compilez deux règles régulières distinctes expressions :

first := regexp.MustCompile(`^On\s(.+?)wrote:$`)
second := regexp.MustCompile(`^On.*On\s.+?wrote:`)
Copier après la connexion
Ensuite, effectuez les étapes suivantes :

    Vérifiez si la première correspond à la chaîne.
  1. Si c'est le cas, passez à l'étape 3. Sinon , la chaîne ne correspond à aucune expression, alors retournez true.
  2. Vérifiez si second correspond à la chaîne.
  3. Si c'est le cas, la chaîne correspond la deuxième expression, alors retournez false. Sinon, retournez true.
Vous pouvez également utiliser un groupe de capture facultatif pour simplifier le processus :

regex := regexp.MustCompile(`^On(.*On)?\s.+?wrote:`)
Copier après la connexion
Vérifiez une correspondance et renvoie vrai si :

    Le groupe 1 se termine par On.
  • Le groupe 1 n'existe pas ou ne se termine pas par On.
Sinon, renvoie false.

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal