过去一直试图在Golang中重写一些文本:http://play.golang.org/p/0hoXx7qA0b5
如何匹配文本字符串中的几个[[]]
链接?
log.Printf("match: %+v", match)
并未清楚显示日志组匹配。我是否缺少帮助我进行比赛的东西,所以我知道它是否是带有标题的链接。
有没有比使用regexp更好的方法?
答案 0 :(得分:1)
似乎(.*)
是一个贪婪的匹配,因此您应该尝试限制第一组。根据您的示例输入,|about
是可选的。
var re = regexp.MustCompile(`\[\[([^|]*)(?:\|(.*))?\]\]`)
func relink(input string) string {
var reform []string
for _, match := range re.FindAllStringSubmatch(input, -1) {
name, short := match[1], match[2]
if short == "" {
short = strings.ToLower(name)
}
reform = append(reform, fmt.Sprintf("[%s](%s)", name, short))
}
return strings.Join(reform, "\n")
}