Maison  >  Article  >  développement back-end  >  Pourquoi mon ensemble Regex annulé ne fonctionne-t-il pas dans Go ?

Pourquoi mon ensemble Regex annulé ne fonctionne-t-il pas dans Go ?

DDD
DDDoriginal
2024-10-27 11:05:02292parcourir

Why Doesn't My Regex Negated Set Work in Go?

L'ensemble d'expressions régulières négatives ne fonctionne pas dans Go

Un utilisateur a rencontré un problème où son expression régulière se comporte différemment dans Go par rapport aux analyseurs d'expressions régulières en ligne . L'objectif est de faire correspondre les noms de fichiers avec des conditions spécifiques, en excluant ceux portant certaines extensions de fichiers. Cependant, l'utilisation d'un ensemble nié (?!) dans l'expression ne produit pas les résultats souhaités dans Go.

Le moteur RE2 de Go et le manque de prise en charge Lookaround

Le La bibliothèque standard Go utilise le moteur RE2, qui ne prend pas en charge certaines fonctionnalités, notamment les opérateurs d'anticipation (?!). Cela signifie que l'opérateur d'anticipation nié utilisé dans l'expression de l'utilisateur n'est pas pris en charge dans Go.

Solution alternative utilisant une expression simplifiée

Pour obtenir la fonctionnalité souhaitée, l'utilisateur peut simplifier l'expression correspondant aux caractéristiques souhaitées du nom de fichier. Au lieu d'utiliser un ensemble nié, un modèle plus explicite peut être utilisé, tel que .w{3}$:

  • . représente un point littéral.
  • w{3} spécifie trois caractères de mot consécutifs (lettres, chiffres ou traits de soulignement).
  • $ indique la fin de la chaîne.

Cette expression simplifiée garantit que le nom du fichier se termine par une extension de fichier à trois caractères sans avoir besoin d'un ensemble nié.

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