Go中的“Unknown escape sequence”错误
技术问答
449 人阅读
|
0 人回复
|
2023-09-12
|
我有以下用 Go 编写函数。这个想法是函数中第一个通过字符串传递给它并返回找到的 IPv4 IP 地址IP 地址,返回空字符串。
7 {7 g3 |7 K+ R; _& y3 p: J0 afunc parseIp(checkIpBody string) string reg,err := regexp.Compile("[0-9] \.[0-9] \.[0-9] \.[0-9] ") if err == nil return "" return reg.FindString(checkIpBody)}
" O5 A* z) O j* g 我得到的编译错误是编译时的错误
8 S$ ]9 c& H4 t2 }未知转义序列:.
0 `: {* v: ?% F, V如何告诉 Go'.是我在寻找的实际角色吗?我想逃避它会成功,但显然我错了。2 l2 t3 x, M5 m% Z$ H. W6 K2 L; @
2 E) ^" W- L0 m8 u R
解决方案:
. r: A* ~6 y5 s) n2 \8 ]( G 该\正则表达式解析器没有解释反斜杠,解释了字符串常量。您应该再次转换反斜杠:: h* F2 \4 d% j5 ^6 B$ S
regexp.Compile("[0-9] \\.[0-9] \\.[0-9] \\.[0-9] ")
7 t9 d' E/ l0 |% w. T: f: r 用" 双引号字符引用的字符串在 Go 中称为“解释的字符串文字。解释的字符串字面量与大多数语言中的字符串字面量相似:\反斜杠字符不按字面包含,用于给下一个字符特殊含义。源必须是\\在分析值中,包含两个反斜杠以获得反斜杠字符。# F% I3 ], F- G n
Go 还有另一种替代方法,在为正则表达式编写字符串时非常有用:原始由字符串文字```引用反引号字符。原始字符串中没有特殊字符,所以只要您的模式不包含反引号,您就可以在不转义任何内容的情况下使用该语法:1 H( w6 K6 E+ l: z D5 s
regexp.Compile(`[0-9] \.[0-9] \.[0-9] \.[0-9] `)% G9 c4 `' J4 ] j; q) Y. u
|
|
|
|
|
|