2
我试图从字符串中删除所有过多的破折号。用OR正则表达式去除过多的破折号
StateFileRegexDashes = regexp.MustCompile(
- + |^- + |? - ?+ $ )
上述正则表达式似乎为我工作的regex101,但不在我的代码。 我想这可能是因为的“G |全球改性剂”,但我认为是由“所有”部分ReplaceAllString()
Golang游乐场解决:https://play.golang.org/p/ZR72gZEhZ_
Regex101:https://regex101.com/r/tUYHo1/1
编辑:
问题是我正在用 - 破折号替换所有的东西,我实际上想要删除前缀和后缀破折号。
现在我只使用strings.Trim()
而不是另一个正则表达式。
var (
StateFileRegex = regexp.MustCompile(`[\/\?<>\\:\*\|":!\s.]`)
StateFileRegexDashes = regexp.MustCompile(`--+`)
)
func hashBotStateFile(name string) string {
lower := strings.ToLower(name)
dashes := StateFileRegex.ReplaceAllString(lower, StateFileCharReplacer)
singles := StateFileRegexDashes.ReplaceAllString(dashes, StateFileCharReplacer)
trimmed := strings.Trim(singles, "-")
return filepath.Join(StateFileFolder, fmt.Sprintf("%s.json", trimmed))
}
啊,我明白你的意思了。用破折号替换双破折号,不用任何东西代替破折号!关于贪婪修饰符也很好! –