我试图使用正则表达式与 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/