【问题标题】:Golang regexp issue with FindStringSubmatchFindStringSubmatch 的 Golang 正则表达式问题
【发布时间】:2015-07-28 00:39:43
【问题描述】:

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

【问题讨论】:

    标签: regex go


    【解决方案1】:

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

    【讨论】:

    【解决方案2】:

    为什么不直接使用:

    ^token=(llll)$
    

    demo

    【讨论】:

      猜你喜欢
      • 2021-09-29
      • 1970-01-01
      • 2015-10-18
      • 2011-01-25
      • 1970-01-01
      相关资源
      最近更新 更多