Regex ne fonctionne pas dans Go : comprendre le problème
Malgré l'apparente simplicité d'un modèle d'expression régulière, pourquoi ne parvient-il pas à correspondre dans Aller? Examinons le problème et découvrons la solution.
Code original et sortie
Considérez le code Go suivant :
package main import ( "fmt" "regexp" ) func main() { a := "parameter=0xFF" regex := "^.+=\b0x[A-F][A-F]\b$" result, err := regexp.MatchString(regex, a) fmt.Println(result, err) }
Étonnamment, le la sortie est fausse
Les chaînes brutes à la rescousse
La clé pour résoudre ce problème réside dans l'utilisation d'un littéral de chaîne brute dans la définition le modèle d’expression régulière. Un littéral de chaîne brute est une séquence de caractères entourés de guillemets arrière (`) au lieu de guillemets doubles (").
En utilisant un littéral de chaîne brute, vous empêchez Go d'interpréter les barres obliques inverses comme des caractères d'échappement. Ceci est crucial car le modèle contient des séquences d'échappement (b et x) qui définissent des conditions de correspondance spécifiques.
Code mis à jour
Avec la chaîne littérale brute, le code devient :
var regex string = `^.+=\b0x[A-F][A-F]\b$`
Explication du modèle
Le modèle mis à jour correspond aux chaînes qui répondent aux critères suivants :
Conclusion
En utilisant une chaîne littérale brute, nous nous assurons que le modèle d'expression régulière est interprété correctement dans Go. Cela permet au modèle de correspondre avec précision aux chaînes d'entrée souhaitées, 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!