一直试图用 Golang 重写一些文本:http://play.golang.org/p/0hoXx7qA0b5如何匹配[[]]文本字符串中的多个链接?log.Printf("match: %+v", match)没有清楚地显示日志组匹配。我是否遗漏了一些可以帮助我处理比赛的东西,所以我知道它是否是带有标题的链接。有没有比使用正则表达式更好的方法?
1 回答
慕标5832272
TA贡献1966条经验 获得超4个赞
这似乎(.*)是一场贪婪的比赛,因此您应该尝试限制第一组。根据您的样本输入,这|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")
}
- 1 回答
- 0 关注
- 109 浏览
添加回答
举报
0/150
提交
取消