当前位置: 首页 > 面试题库 >

Go中的“未知转义序列”错误

慎兴业
2023-03-14
问题内容

我用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 '.'我正在寻找的实际角色?我以为转义可以解决问题,但显然我错了。


问题答案:

\反斜杠没有被正则表达式解析器解释,它被解释的字符串常量。您应该再次转义反斜杠:

regexp.Compile("[0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+")

"双引号引起来的字符串在Go中被称为“解释html" target="_blank">字符串文字”。解释的字符串文字与大多数语言中的字符串文字相似:\反斜杠字符不按字面意义包含,它们用于赋予下一个字符特殊的含义。源代码必须\\连续包含两个反斜杠,才能在解析的值中获得单个反斜杠字符。

Go还有另一种选择,在为正则表达式编写字符串文字时可能会很有用:```反引号字符引用“原始字符串文字”
。原始字符串文字中没有特殊字符,因此,只要您的模式不包含反引号,就可以使用此语法而无需转义任何内容:

regexp.Compile(`[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+`)

这些在Go规范的“字符串文字”部分中进行了描述。



 类似资料:
  • 问题内容: 我对Go真的很陌生,su只在这里忍受我。我正在尝试使用以下代码编写将mysql数据加载到Redis集群的代码:redis-go- cluster , load2redis 这是代码。它有点长,请在这里忍受。 当我执行它时,出现以下异常: 有人可以向我解释我在做什么错吗?我将不胜感激。 问题答案: 如前所述,不适用于地图。这是您可以解决它的一种方法。 Do方法映射到Redis命令集,并且

  • 我试图将一个新表添加到一个已经存在的数据库中,但它总是给我一个错误“外键定义中的未知列'PRODUCT_ID'”。 如有任何帮助,我将不胜感激

  • 问题内容: 我有一个名为表有三列:,,。 我正在尝试创建一个查询,该查询将根据昵称返回余额,并且在使用此查询时遇到错误: 有人可以在这里看到我做错了吗? 问题答案: 反引号(`)用于标识符,例如表名,列名等。单引号(’)用于字符串文字。 您想做: 或者,更明确地说: 如果没有歧义的可能性,并且表/列名称没有特殊字符或空格,则可以将`设置为off。 这是一些干燥且难以阅读的文档:http : //d

  • 此函数有问题。它应该返回使用下面的sql调用收集的数据的json字符串。问题是,当通过服务器访问页面时(例如-localhost/app/API/states/Alabama/1/10.json),我得到一个错误代码“500”。奇怪的是,数据在使用.json和不使用appending.json的情况下按预期显示。据我所知,控制器和模型设置得很好,但错误代码仍然存在: {“code”:500,“ur

  • 为什么查询给出这个错误: #1054-“WHERE子句”中得列“NOPL”未知?

  • 下面是我的Spring boot Rest API应用程序。 vendor.java vendorRepository.java 不过,我还是得到了一个错误: 这个错误是什么?如何化解?