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 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-26 03:55:27363parcourir

 Why Isn't My Regex Negated Set Working in Go?

Un ensemble d'expressions régulières niées ne fonctionne pas dans Go

Un utilisateur a rencontré un problème où une expression régulière avec un ensemble nié ne fonctionnait pas comme attendu dans Go. L'expression, vérifiée sur plusieurs analyseurs d'expressions régulières en ligne, était destinée à faire correspondre des chaînes qui ne se terminaient pas par des extensions de fichier spécifiques.

^(.*\.(?!(htm|html|class|js)$))?[^.]

Cependant, l'implémentation de cette expression dans Go a donné des résultats différents. L'utilisateur a simplifié l'expression pour supprimer l'ensemble nié et obtenu les correspondances souhaitées.

Comprendre le problème

Le moteur d'expression régulière de Go, RE2, ne prend pas en charge les opérateurs de recherche comme le anticipation négative ?! utilisé dans l’expression originale. Cette absence de prise en charge de la recherche a rendu l'ensemble annulé inefficace.

Solution

Pour garantir qu'une chaîne se termine par une extension de fichier à trois caractères, l'utilisateur peut simplifier l'expression to :

\.\w{3}$

Cette expression correspond à un point littéral, suivi de trois caractères de mot (alphanumériques et trait de soulignement), suivis de la fin de la chaîne. Il obtient effectivement le même résultat que l'expression originale mais sans recourir aux opérateurs de recherche.

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