登录
首页 >  Golang >  Go问答

正则表达式未匹配

来源:stackoverflow

时间:2024-03-25 21:09:34 423浏览 收藏

在正则表达式匹配中,使用 \\x 序列时,需要对转义字符进行转义,因为字符串中的 \\x 表示转义字符序列,而不是实际的 \\x 值。这导致正则表达式无法匹配存储在字节数组中的实际字符串值。

问题内容

我正在尝试以下代码

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))

但它给了我错误,尽管在在线正则表达式测试器上它工作正常并且匹配整个字符串


解决方案


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

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

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

理论要掌握,实操不能落!以上关于《正则表达式未匹配》的详细介绍,大家都掌握了吧!如果想要继续提升自己的能力,那么就来关注golang学习网公众号吧!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>