Maison > Article > développement back-end > Pourquoi ma correspondance Go Regex échoue-t-elle, mais celle de Python réussit ?
Échec de la correspondance Regex dans Go
Un utilisateur rencontre un problème où un modèle d'expression régulière ne parvient pas à correspondre dans Go. L'extrait de code tente de valider une chaîne de la forme "parameter=0xFF", suivant le modèle regex "^. =b0xA-Fb$". Cependant, la fonction MatchString() renvoie false et une erreur nulle, contrairement à Python où la correspondance est réussie.
Débogage du code Go
Pour résoudre le problème, l'utilisateur doit envisager d'utiliser une chaîne littérale brute comme chaîne de modèle. Dans Go, les littéraux de chaîne bruts sont placés entre guillemets « » au lieu de guillemets standard « ». Cette convention empêche le caractère d'échappement « » d'être interprété dans la chaîne.
Code Go corrigé
Le code Go corrigé utilisant une chaîne littérale brute est :
package main import ( "fmt" "regexp" ) func main() { var a string = "parameter=0xFF" var regex string = `^.+=\b0x[A-F][A-F]\b$` result, err := regexp.MatchString(regex, a) fmt.Println(result, err) }
Sortie attendue
Après avoir utilisé un littéral de chaîne brut, la sortie attendue est :
true <nil>
Cela indique que le la chaîne d'entrée correspond au format souhaité, comme prévu.
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!