Maison > développement back-end > Golang > le corps du texte

Pourquoi mon Go Regex ne correspond-il pas ?

Barbara Streisand
Libérer: 2024-11-18 20:59:02
original
249 Les gens l'ont consulté

Why Doesn't My Go Regex Match?

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)
}
Copier après la connexion

Étonnamment, le la sortie est fausse , indiquant un échec de correspondance. Cela contredit l'attente d'une correspondance basée sur l'entrée et le modèle fournis.

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$`
Copier après la connexion

Explication du modèle

Le modèle mis à jour correspond aux chaînes qui répondent aux critères suivants :

  • Commence par n'importe quel nombre de caractères (. )
  • Contient un signe égal (=)
  • Suivi du préfixe "0x" (b0x)
  • Contient deux caractères hexadécimaux ([A-F][A-F])
  • Se termine par une limite de mot (b)

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal