如何在Golang中重写Wiki链接?

时间:2018-12-08 11:14:12

标签: go

过去一直试图在Golang中重写一些文本:http://play.golang.org/p/0hoXx7qA0b5

如何匹配文本字符串中的几个[[]]链接?

log.Printf("match: %+v", match)并未清楚显示日志组匹配。我是否缺少帮助我进行比赛的东西,所以我知道它是否是带有标题的链接。

有没有比使用regexp更好的方法?

1 个答案:

答案 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")
}

Playground