我正在尝试以下代码
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它工作正常并匹配整个字符串
当您在字符串中使用\
时,它会发出转义字符序列的信号。字符串本身不显示为\x01...
,而是将这些块中的每一个转换为单个字符。
也就是说你的正则表达式试图匹配未处理的字符串的值而不是d
中存储的实际字符串值。
我不确定如何改进你的正则表达式,因为我不清楚你期望它匹配什么。目前,您似乎正在尝试使用特定方法验证字节数组是否已实例化,而不是将字节设置为整数。如果您能更好地阐明正则表达式的目标,我可以进一步提供帮助。
看看不同种类的string literals in the Go documentation。
您可能希望在第一个字符串中使用back-ticks(`)作为“raw_string_lit”。