Regex-Übereinstimmungsfehler in Go
Ein Benutzer stößt auf ein Problem, bei dem ein reguläres Ausdrucksmuster in Go nicht übereinstimmt. Das Code-Snippet versucht, eine Zeichenfolge der Form „parameter=0xFF“ zu validieren und folgt dabei dem Regex-Muster „^. =b0xA-Fb$“. Allerdings gibt die MatchString()-Funktion „Falsch“ und einen Null-Fehler zurück, anders als in Python, wo der Abgleich erfolgreich ist.
Debuggen des Go-Codes
Um das Problem zu beheben, Der Benutzer sollte die Verwendung eines Rohzeichenfolgenliterals als Musterzeichenfolge in Betracht ziehen. In Go werden rohe String-Literale in Backticks „“ anstelle von Standard-Anführungszeichen „“ eingeschlossen. Diese Konvention verhindert, dass das Escape-Zeichen „“ innerhalb der Zeichenfolge interpretiert wird.
Korrigierter Go-Code
Der korrigierte Go-Code unter Verwendung eines rohen String-Literals lautet:
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) }
Erwartet Ausgabe
Nach der Verwendung eines Rohzeichenfolgenliterals lautet die erwartete Ausgabe:
true <nil>
Dies zeigt an, dass die Eingabezeichenfolge wie beabsichtigt mit dem gewünschten Format übereinstimmt.
Das obige ist der detaillierte Inhalt vonWarum schlägt mein Go-Regex-Match fehl, der von Python jedoch erfolgreich?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!