Rumah >pembangunan bahagian belakang >Golang >Mengapa Padanan Go Regex Saya Gagal, Tetapi Python Berjaya?

Mengapa Padanan Go Regex Saya Gagal, Tetapi Python Berjaya?

Susan Sarandon
Susan Sarandonasal
2024-11-26 03:18:10266semak imbas

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

Kegagalan Padanan Regex dalam Go

Seorang pengguna menghadapi masalah apabila corak ungkapan biasa gagal dipadankan dalam Go. Coretan kod cuba untuk mengesahkan rentetan bentuk "parameter=0xFF", mengikut corak regex "^. =b0xA-Fb$". Walau bagaimanapun, fungsi MatchString() mengembalikan ralat palsu dan sifar, tidak seperti dalam Python di mana perlawanan berjaya.

Menyahpepijat Kod Go

Untuk menyelesaikan isu, pengguna harus mempertimbangkan untuk menggunakan rentetan mentah literal sebagai rentetan corak. Dalam Go, literal rentetan mentah disertakan dalam tanda belakang '`' dan bukannya tanda petikan standard '"'. Konvensyen ini menghalang aksara melarikan diri '' daripada ditafsirkan dalam rentetan.

Kod Go Dibetulkan

Kod Go yang diperbetulkan menggunakan literal rentetan mentah ialah:

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)
}

Output Jangkaan

Selepas menggunakan literal rentetan mentah, output yang dijangkakan ialah:

true <nil>

Ini menunjukkan bahawa rentetan input sepadan dengan format yang diingini, seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa Padanan Go Regex Saya Gagal, Tetapi Python Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn