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 ?

Pourquoi ma correspondance d'expression régulière Go échoue-t-elle et comment puis-je y remédier ?

DDD
DDDoriginal
2024-11-24 22:19:18958parcourir

Why Does My Go Regular Expression Match Fail, and How Can I Fix It?

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!

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