Maison > développement back-end > Golang > le corps du texte

Comment implémenter un ensemble négatif dans Regex for Go : un guide pour éviter les résultats inattendus

Susan Sarandon
Libérer: 2024-10-26 07:23:02
original
769 Les gens l'ont consulté

 How to Implement Negative Set in Regex for Go: A Guide to Avoiding Unexpected Results

Implémentation d'un ensemble négatif dans Regex for Go

L'expression régulière fournie vise à capturer les noms de fichiers qui ne se terminent pas par des extensions de fichiers spécifiques (par ex. , htm, html, classe, js). Cependant, l'implémentation dans Go à l'aide du package regexp donne des résultats différents de ceux des analyseurs d'expressions régulières en ligne.

Cette divergence se produit parce que le moteur d'expression régulière RE2 de la bibliothèque standard Go ne prend pas en charge les analyses anticipées négatives (c'est-à-dire l'opérateur ?! utilisé dans le expression originale). Par conséquent, il ne peut pas exclure les chaînes se terminant par les extensions de fichier spécifiées.

Pour reproduire le comportement de l'analyseur d'expressions régulières en ligne, vous pouvez envisager les approches suivantes :

  • Utilisez une analyse positive (?!.(htm|html|class|js)$) : Cela affirme que la chaîne d'entrée ne se termine pas par l'une des extensions de fichier spécifiées.
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
Copier après la connexion
  • Utiliser un Lookbehind négatif (? Cela affirme que la chaîne d'entrée n'est précédée d'aucune des extensions de fichier spécifiées.
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
Copier après la connexion
  • Supprimer l'ensemble négatif et utiliser l'extension de fichier littérale : Si vous devez uniquement vous assurer que la chaîne se termine par une extension de fichier à trois caractères, vous pouvez simplifiez l'expression en :
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>
Copier après la connexion

Notez que ces expressions peuvent donner des résultats différents car elles implémentent la logique de différentes manières. Choisir l'approche qui correspond le mieux à votre cas d'utilisation est essentiel.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!