Maison > Article > développement back-end > Pourquoi ma correspondance d'expression régulière Go échoue-t-elle et comment puis-je y remédier ?
La correspondance des expressions régulières échoue dans Go
Les rencontres avec les expressions régulières peuvent être déroutantes, en particulier pour ceux qui ont moins d'expérience. Cela peut être exacerbé lorsque vous travaillez avec Go, en raison de différences subtiles de syntaxe et de comportement par rapport à d'autres langages comme Python. Plus précisément, les utilisateurs peuvent être confrontés à des difficultés lorsqu'ils tentent de faire correspondre des modèles spécifiques à l'aide d'expressions régulières.
Un tel scénario s'est produit récemment, lorsqu'un utilisateur a rencontré un comportement inattendu lors de la correspondance d'une chaîne dans Go. L'expression régulière a été définie comme "^. =b0x[A-F][A-F]b$", destinée à correspondre à un modèle composé de toute chaîne non vide suivie d'un signe égal et d'un nombre hexadécimal avec deux chiffres hexadécimaux.
À leur grande surprise, l'expression régulière a donné un résultat faux, bien qu'elle fonctionne correctement en Python. Après un examen plus approfondi, il a été découvert que la chaîne d'expression régulière n'était pas entourée de littéraux de chaîne brute, ce qui affecte la façon dont les caractères sont interprétés dans Go.
Utilisation de littéraux de chaîne brute, indiqués par des guillemets arrière `` (plutôt que des guillemets réguliers guillemets "), garantit que les séquences d'échappement et les caractères spéciaux dans la chaîne sont traités littéralement, sans aucune interprétation. Dans ce cas, le littéral de chaîne brut garantit que les barres obliques inverses et les caractères hexadécimaux conservent leur valeur prévue. significations, permettant à l'expression régulière de correspondre correctement au modèle souhaité.
En enfermant la chaîne de l'expression régulière dans des littéraux de chaîne bruts, comme indiqué ci-dessous, l'opération de correspondance a renvoyé avec succès true :
var regex string = `^.+=\b0x[A-F][A-F]\b$`
Avec cet ajustement, le programme Go correspond et extrait désormais avec précision le motif souhaité de la chaîne d'entrée donnée.
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!