我用 Go 编写了以下函数。这个想法是函数有一个字符串传递给它并返回找到的第一个 IPv4 IP 地址。如果未找到 IP 地址,则返回空字符串。
func parseIp(checkIpBody string) string {
reg, err := regexp.Compile("[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+")
if err == nil {
return ""
}
return reg.FindString(checkIpBody)
}
我得到的编译时错误是
未知的转义序列: .
我如何告诉 Go'.'
是我正在寻找的实际角色吗?我以为逃避它会成功,但显然我错了。
The \
正则表达式解析器不会解释反斜杠,而是在字符串文字中解释它。你应该再次转义反斜杠:
regexp.Compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")
用引号引起来的字符串"
双引号字符称为“解释的Go 中的“字符串文字”。解释后的字符串文字与大多数语言中的字符串文字类似:\
反斜杠字符不按字面意思包含在内,它们用于为下一个字符赋予特殊含义。来源必须包括\\
连续两个反斜杠以获得解析值中的单个反斜杠字符。
Go 还有另一种选择,在为正则表达式编写字符串文字时非常有用:a "raw字符串文字”被引用`
反引号字符。原始字符串文字中没有特殊字符,因此只要您的模式不包含反引号,您就可以使用此语法而无需转义任何内容:
regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`)
这些描述于Go 规范的“字符串文字”部分.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)