Mengapa My Go Regex Tidak Padan?

Barbara Streisand
Lepaskan: 2024-11-18 20:59:02
asal
251 orang telah melayarinya

Why Doesn't My Go Regex Match?

Regex Tidak Berfungsi dalam Go: Memahami Masalah

Walaupun nampak kesederhanaan corak ungkapan biasa, mengapa ia gagal dipadankan dalam Pergi? Mari kita mendalami isu ini dan temui penyelesaiannya.

Kod dan Output Asal

Pertimbangkan kod Go berikut:

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)
}
Salin selepas log masuk

Anehnya, output adalah palsu , menunjukkan padanan yang gagal. Ini bercanggah dengan jangkaan padanan berdasarkan input dan corak yang disediakan.

Rentetan Mentah untuk Menyelamat
Kunci untuk menyelesaikan isu ini terletak pada penggunaan literal rentetan mentah dalam mentakrifkan corak ungkapan biasa. Literal rentetan mentah ialah jujukan aksara yang disertakan dalam petikan belakang (`) dan bukannya petikan berganda (").

Dengan menggunakan literal rentetan mentah, anda menghalang Go daripada mentafsir garis miring ke belakang sebagai aksara melarikan diri. Ini penting kerana corak mengandungi jujukan melarikan diri (b dan x) yang mentakrifkan keadaan padanan tertentu.

Kod Dikemas Kini

Dengan rentetan mentah literal, kod itu menjadi:

var regex string = `^.+=\b0x[A-F][A-F]\b$`
Salin selepas log masuk

Penjelasan Corak

Corak yang dikemas kini sepadan dengan rentetan yang memenuhi kriteria berikut:

  • Bermula dengan sebarang bilangan aksara (. )
  • Mengandungi tanda sama dengan (=)
  • Diikuti dengan awalan "0x" (b0x)
  • Mengandungi dua aksara perenambelasan ([A-F][A-F])
  • Diakhiri dengan sempadan perkataan (b)

Kesimpulan

Dengan menggunakan literal rentetan mentah, kami memastikan corak ungkapan biasa ditafsirkan dengan betul dalam Go. Ini membolehkan corak padan dengan tepat rentetan input yang dikehendaki, seperti yang dimaksudkan.

Atas ialah kandungan terperinci Mengapa My Go Regex Tidak Padan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan