[英]Golang regexp issue with FindStringSubmatch
我試圖使用regexp與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
matchs數組的長度為3,而我認為它的長度應該為2。最后一個值是一個空字符串。 我不明白為什么這樣做。 這是golang的錯誤嗎? 如何提交golang錯誤?
最后一個空值對應於(.+)
,僅表示此捕獲組在匹配時未“命中”。 換句話說,這是完全合法的。 在您的情況下,可以使用非捕獲組代替: (?:.+)
-http (?:.+)
//play.golang.org/p/MEkkoGqxho
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.