【问题标题】:Regex string in Go [duplicate]Go中的正则表达式字符串[重复]
【发布时间】:2018-05-10 08:41:52
【问题描述】:

我尝试使用字符串

"/{foo}/{bar:[a-zA-Z0-9=\-\/]+}.{vzz}"

在围棋中。

当我使用" 时,我看到了错误:

unknown escape sequence

当我使用' 时,我得到:

cannot use '\u0000' (type rune) as type string in array or slice literal
unknown escape sequence

如何在我的 Go 应用程序中将此正则表达式用于 MUX?

【问题讨论】:

标签: regex go mux


【解决方案1】:

当您的意思是字符串文字中的 \ 字符时 - 它必须另外转义

"/{foo}/{bar:[a-zA-Z0-9=\\-\\/]+}.{vzz}"

否则你可以使用反引号而不是双引号

`/{foo}/{bar:[a-zA-Z0-9=\-\/]+}.{vzz}`

【讨论】:

  • 非常感谢!我混淆了'和`
【解决方案2】:

根据 Golang 语言规范。

string_lit             = raw_string_lit | interpreted_string_lit .
raw_string_lit         = "`" { unicode_char | newline } "`" .
interpreted_string_lit = `"` { unicode_value | byte_value } `"` .

因此,如果您不想转义字符串文字中的任何内容,则需要一个原始的。和

原始字符串文字的值是由引号之间的未解释(隐式 UTF-8 编码)字符组成的字符串

Golang 不使用单引号 ' 作为字符串文字指示符。双引号" 的错误是由于编译器试图在正则表达式解释器之前将\-\/ 作为字符串的一部分转义。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 2020-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多