Maison >développement back-end >Golang >Comment implémenter un ensemble négatif dans Regex for Go : un guide pour éviter les résultats inattendus
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 :
<code class="go">re := regexp.MustCompile(`^(.*\.(?!(htm|html|class|js)$))([^.]*)$`)</code>
<code class="go">re := regexp.MustCompile(`^(.*?)(?<!\.(htm|html|class|js)$)`)</code>
<code class="go">re := regexp.MustCompile(`.\w{3}$`)</code>
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!