Maison  >  Article  >  développement back-end  >  Pourquoi ma correspondance Go Regex échoue-t-elle, mais celle de Python réussit ?

Pourquoi ma correspondance Go Regex échoue-t-elle, mais celle de Python réussit ?

Susan Sarandon
Susan Sarandonoriginal
2024-11-26 03:18:10193parcourir

Why Does My Go Regex Match Fail, But Python's Succeeds?

É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!

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