正则表达式不匹配

问题描述 投票:-6回答:2

我正在尝试以下代码

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它工作正常并匹配整个字符串

regex go
2个回答
1
投票

当您在字符串中使用\时,它会发出转义字符序列的信号。字符串本身不显示为\x01...,而是将这些块中的每一个转换为单个字符。

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

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


0
投票

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

您可能希望在第一个字符串中使用back-ticks(`)作为“raw_string_lit”。

© www.soinside.com 2019 - 2024. All rights reserved.