Go 内置正则表达式 pkg 的文档在这里:https : //golang.org/pkg/regexp/ Go 中的正则表达式测试器在这里:https ://regoio.herokuapp.com
我有一个预定义单词的列表:
christmas, santa, tree ( -> the order here is important. Check for words from left to right)
我正在尝试在不同的 url 字符串中检查上述单词之一:
/api/container/:containerID/santa ( -> I want back santa)
/api/tree/:containerID/ ( -> I want back tree)
/api/tree/:containerID/christmas ( -> I want back christmas, not tree)
我尝试过的正则表达式是:
re := regexp.MustCompile(`^(christmas)|(santa)|(tree)$`)
fmt.Println("santa? ", string(re.Find([]byte(`/api/container/:containerID/santa`))))
// output OK: santa? santa
fmt.Println("tree? ", string(re.Find([]byte(`/api/tree/:containerID/`))))
// output FAIL/EMPTY: tree?
fmt.Println("christmas? ", string(re.Find([]byte(`/api/tree/:containerID/christmas`))))
// output FAIL/EMPTY: christmas?
还尝试了以下方法,但这会返回孔字符串,而不是我正在寻找的单词:
re := regexp.MustCompile(`^.*(christmas).*|.*(santa).*|.*(tree).*$`
fmt.Println("santa? ", string(re.Find([]byte(`/api/container/:containerID/santa`))))
// output FAIL/HOLE URL BACK: santa? /api/container/:containerID/santa
fmt.Println("tree? ", string(re.Find([]byte(`/api/tree/:containerID/`))))
// output FAIL/FAIL/HOLE URL BACK: tree? /api/tree/:containerID/
string(re.Find([]byte(`/api/tree/:containerID/christmas`))))
// output FAIL/FAIL/HOLE URL BACK: christmas? /api/tree/:containerID/christmas
我不知道正则表达式“引擎”的最后一个表达式有什么问题,应该只记住括号内的内容。