正規表示式在Go 中不起作用:理解問題
儘管正規表示式模式看起來很簡單,但為什麼它無法匹配去?讓我們深入研究問題並找出解決方案。
原始程式碼和輸出
考慮以下Go 程式碼:
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) }
令人驚訝的是,輸出為false
原始字串來救援
解決此問題的關鍵在於在定義時使用原始字串文字正規表示式模式。原始字串文字是用反引號(`) 而不是雙引號(") 括起來的字元序列。
透過使用原始字串文字,可以防止Go 將反斜線解釋為轉義字元。這一點至關重要因為該模式包含定義特定匹配條件的轉義序列(b 和x)。 >
更新後的模式匹配滿足以下條件的字串:
以任意數量的字元(. ) 開頭包含等號(=)var regex string = `^.+=\b0x[A-F][A-F]\b$`
後跟前綴「0x」(b0x)包含兩個十六進位字符([A-F][A-F])
以單字邊界結束(b)
以上是為什麼我的 Go 正規表示式不符?的詳細內容。更多資訊請關注PHP中文網其他相關文章!