本文整理汇总了Golang中regexp.Regexp.ReplaceAllStringFunc方法的典型用法代码示例。如果您正苦于以下问题:Golang Regexp.ReplaceAllStringFunc方法的具体用法?Golang Regexp.ReplaceAllStringFunc怎么用?Golang Regexp.ReplaceAllStringFunc使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类regexp.Regexp
的用法示例。
在下文中一共展示了Regexp.ReplaceAllStringFunc方法的8个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: pathName
func pathName(q string) string {
var c *regexp.Regexp
c = regexp.MustCompile(`[A-Z]+`)
q = c.ReplaceAllStringFunc(q,
func(part string) string {
plen := len(part)
if plen > 2 {
repl := part[0:1] + strings.ToLower(part[1:plen-1]) + part[plen-1:]
return repl
}
return part
},
)
q = strings.ToLower(q[0:1]) + q[1:len(q)-1] + strings.ToLower(q[len(q)-1:])
c = regexp.MustCompile(`[A-Z]`)
q = c.ReplaceAllStringFunc(q,
func(in string) string {
return "_" + strings.ToLower(in)
},
)
q = strings.ToLower(q)
return q
}
示例2: recGsub
func recGsub(r *regexp.Regexp, in string, f func(string) string) string {
for keepRunning := true; keepRunning; {
keepRunning = false
in = r.ReplaceAllStringFunc(in, func(s string) string {
keepRunning = true
return f(s)
})
}
return in
}
示例3: export
func export(delim *regexp.Regexp, parts ...string) (res string) {
for _, in := range parts {
res += delim.ReplaceAllStringFunc(in, func(match string) string {
switch len(match) {
case 1:
return strings.ToUpper(match)
case 2:
return strings.ToUpper(match[1:])
}
panic("unreachable")
})
}
return
}
示例4: RegexpReplace
func RegexpReplace(str, replace string, regex *regexp.Regexp, count int) string {
if 0 == count {
return str
}
if regex != nil {
if count < 0 {
return regex.ReplaceAllString(str, replace)
}
return regex.ReplaceAllStringFunc(str, func(s string) string {
if count != 0 {
count -= 1
return replace
}
return s
})
}
return str
}
示例5: CreateCompilableRoutePath
// Create a RegEx for a valid route path
func CreateCompilableRoutePath(route string) (*regexp.Regexp, bool) {
var re *regexp.Regexp
var isStatic bool
regexpString := route
isStaticRegexp := regexp.MustCompile(`[\(\)\?\<\>:]`)
if !isStaticRegexp.MatchString(route) {
isStatic = true
}
// Dots
re = regexp.MustCompile(`([^\\])\.`)
regexpString = re.ReplaceAllStringFunc(regexpString, func(m string) string {
return fmt.Sprintf(`%s\.`, string(m[0]))
})
// Wildcard names
re = regexp.MustCompile(`:[^/#?()\.\\]+\*`)
regexpString = re.ReplaceAllStringFunc(regexpString, func(m string) string {
return fmt.Sprintf("(?P<%s>.+)", m[1:len(m)-1])
})
re = regexp.MustCompile(`:[^/#?()\.\\]+`)
regexpString = re.ReplaceAllStringFunc(regexpString, func(m string) string {
return fmt.Sprintf(`(?P<%s>[^/#?]+)`, m[1:len(m)])
})
s := fmt.Sprintf(`\A%s\z`, regexpString)
return regexp.MustCompile(s), isStatic
}
示例6: FixContent
// 性能更好, 5倍的差距
func (this *NoteService) FixContent(content string, isMarkdown bool) string {
baseUrl := configService.GetSiteUrl()
baseUrlPattern := baseUrl
// 避免https的url
if baseUrl[0:8] == "https://" {
baseUrlPattern = strings.Replace(baseUrl, "https://", "https*://", 1)
} else {
baseUrlPattern = strings.Replace(baseUrl, "http://", "https*://", 1)
}
patterns := []map[string]string{
map[string]string{"src": "src", "middle": "/file/outputImage", "param": "fileId", "to": "getImage?fileId="},
map[string]string{"src": "href", "middle": "/attach/download", "param": "attachId", "to": "getAttach?fileId="},
// 该链接已失效, 不再支持
map[string]string{"src": "href", "middle": "/attach/downloadAll", "param": "noteId", "to": "getAllAttachs?noteId="},
}
for _, eachPattern := range patterns {
if !isMarkdown {
// 富文本处理
// <img src="http://leanote.com/file/outputImage?fileId=5503537b38f4111dcb0000d1">
// <a href="http://leanote.com/attach/download?attachId=5504243a38f4111dcb00017d"></a>
var reg *regexp.Regexp
var reg2 *regexp.Regexp
if eachPattern["src"] == "src" {
reg, _ = regexp.Compile("<img(?:[^>]+?)(?:" + eachPattern["src"] + `=['"]*` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=(?:[a-z0-9A-Z]{24})["']*)[^>]*>`)
reg2, _ = regexp.Compile("<img(?:[^>]+?)(" + eachPattern["src"] + `=['"]*` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=([a-z0-9A-Z]{24})["']*)[^>]*>`)
} else {
reg, _ = regexp.Compile("<a(?:[^>]+?)(?:" + eachPattern["src"] + `=['"]*` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=(?:[a-z0-9A-Z]{24})["']*)[^>]*>`)
reg2, _ = regexp.Compile("<a(?:[^>]+?)(" + eachPattern["src"] + `=['"]*` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=([a-z0-9A-Z]{24})["']*)[^>]*>`)
}
content = reg.ReplaceAllStringFunc(content, func(str string) string {
// str=这样的
// <img src="http://localhost:9000/file/outputImage?fileId=563d706e99c37b48e0000001" alt="" data-mce-src="http://localhost:9000/file/outputImage?fileId=563d706e99c37b48e0000002">
eachFind := reg2.FindStringSubmatch(str)
str = strings.Replace(str,
eachFind[1],
eachPattern["src"]+"=\""+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+"\"",
1)
// fmt.Println(str)
return str
})
/*
finds := reg.FindAllStringSubmatch(content, -1) // 查找所有的
for _, eachFind := range finds {
if len(eachFind) == 3 {
// 这一行会非常慢!, content是全部的内容, 多次replace导致
content = strings.Replace(content,
eachFind[1],
eachPattern["src"]+"=\""+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+"\"",
1)
}
}
*/
} else {
// markdown处理
// ![](http://leanote.com/file/outputImage?fileId=5503537b38f4111dcb0000d1)
// [selection 2.html](http://leanote.com/attach/download?attachId=5504262638f4111dcb00017f)
// [all.tar.gz](http://leanote.com/attach/downloadAll?noteId=5503b57d59f81b4eb4000000)
pre := "!" // 默认图片
if eachPattern["src"] == "href" { // 是attach
pre = ""
}
regImageMarkdown, _ := regexp.Compile(pre + `\[(?:[^]]*?)\]\(` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=(?:[a-z0-9A-Z]{24})\)`)
regImageMarkdown2, _ := regexp.Compile(pre + `\[([^]]*?)\]\(` + baseUrlPattern + eachPattern["middle"] + `\?` + eachPattern["param"] + `=([a-z0-9A-Z]{24})\)`)
content = regImageMarkdown.ReplaceAllStringFunc(content, func(str string) string {
// str=这样的
// <img src="http://localhost:9000/file/outputImage?fileId=563d706e99c37b48e0000001" alt="" data-mce-src="http://localhost:9000/file/outputImage?fileId=563d706e99c37b48e0000002">
eachFind := regImageMarkdown2.FindStringSubmatch(str)
str = strings.Replace(str, eachFind[0], pre+"["+eachFind[1]+"]("+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+")", 1)
// fmt.Println(str)
return str
})
/*
findsImageMarkdown := regImageMarkdown.FindAllStringSubmatch(content, -1) // 查找所有的
// [[![](http://leanote.com/file/outputImage?fileId=5503537b38f4111dcb0000d1) 5503537b38f4111dcb0000d1] [![你好啊, 我很好, 为什么?](http://leanote.com/file/outputImage?fileId=5503537b38f4111dcb0000d1) 5503537b38f4111dcb0000d1]]
for _, eachFind := range findsImageMarkdown {
// [![你好啊, 我很好, 为什么?](http://leanote.com/file/outputImage?fileId=5503537b38f4111dcb0000d1) 你好啊, 我很好, 为什么? 5503537b38f4111dcb0000d1]
if len(eachFind) == 3 {
content = strings.Replace(content, eachFind[0], pre+"["+eachFind[1]+"]("+baseUrl+"/api/file/"+eachPattern["to"]+eachFind[2]+")", 1)
}
}
//.........这里部分代码省略.........
示例7: headlineSynopsis
func headlineSynopsis(synopsis, header string, scanner *regexp.Regexp) string {
return scanner.ReplaceAllStringFunc(synopsis, func(headline string) string {
return fmt.Sprintf("%s %s", header, headline)
})
}
示例8: regexReplaceFunc
func regexReplaceFunc(r *regexp.Regexp, text string, start string, end string) string {
return r.ReplaceAllStringFunc(text, func(s string) string {
return start + r.FindStringSubmatch(s)[1] + end
})
}