正则表达式不匹配

时间:2018-08-31 13:36:09

标签: regex go

我正在尝试以下代码

d := []byte("\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x80J\x13\x80SQ\x80L\xe0\x80@\x92\x80L?\x80H\xe0")

r := regexp.MustCompile(`(\\x[0-9][0-9].*)+`)

fmt.Println(r.Match(d))

但是它给了我错误,尽管在online regex tester上它可以正常工作并且匹配整个字符串

2 个答案:

答案 0 :(得分:1)

在字符串中使用\时,它表示转义字符序列。字符串本身不显示为\x01...,而是将每个这些块都转换为单个字符

也就是说,您的正则表达式试图匹配未处理的字符串的值,而不是存储在d中的实际字符串值。

我不确定如何改善您的正则表达式,因为我不清楚您希望它匹配什么。当前,您似乎正在尝试验证字节数组是使用特定方法实例化的,而不是通过将字节设置为整数来实例化的。如果您可以更好地表达正则表达式的目的,我也许可以进一步提供帮助。

答案 1 :(得分:0)

看看string literals in the Go documentation的不同种类。

您可能希望对第一个字符串中的“ raw_string_lit”使用反引号(