regex - FindStringSubmatch 的 Golang 正则表达式问题

标签 regex go

我试图使用正则表达式与 or 运算符进行一些模式匹配,但我得到了一些奇怪的结果。除了要点之外,我已经删除了所有内容以显示我的结果存在问题。

这是我的代码:

主要包

import "fmt"
import "regexp"

func main() {
  authRegexp := regexp.MustCompile("^token=(llll|(.+))$")
  matches := authRegexp.FindStringSubmatch("token=llll")
  fmt.Println("MATCHES", matches, len(matches))
        // MATCHES [token=llll llll ] 3
}

网址:http://play.golang.org/p/nLtWQQgveY

matches 数组的长度为 3,而我认为它应该有 2 个长度。最后一个值是一个空字符串。我不明白为什么要这样做。这是一个 golang 错误吗?如何提交 golang 错误?

最佳答案

最后一个空值对应于 (.+) 并且只是表明这个捕获组在匹配时没有被“命中”。换句话说,它是完全合法的。在您的情况下,使用非捕获组是安全的:(?:.+) - http://play.golang.org/p/MEkkoGqxho

关于regex - FindStringSubmatch 的 Golang 正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31665634/

相关文章:

Go exec.Command(...).Wait() 永远挂起

go - 使用 FlatBuffers 更快地发送/写入 Float32 数组

pointers - 为指针类型的字段赋值的简写是什么

go - 如何使用 gccgo 构建静态程序

go - Uber Zap 记录器不在日志语句中打印调用者信息

python - 使用 python 如何在文本文件的选择行中插入字符串,其中插入的字符串取决于行的内容和已知的映射?

javascript - 使用 Javascript 中的 regex 或 indexOf 更改字符串中的特定字符(转义字符)

javascript - 在获取背景图像 url 时,如何让 JQuery 替换字符串的非 URL 部分

Python 正则表达式或 |贪心

javascript - 在 CF 的正则表达式中排除 $