正则表达式在 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$`
模式说明
更新后的模式匹配满足以下条件的字符串:
结论
通过使用原始字符串文字,我们确保正则表达式模式被解释这使得模式能够按照预期准确匹配所需的输入字符串。
以上是为什么我的 Go 正则表达式不匹配?的详细内容。更多信息请关注PHP中文网其他相关文章!