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))
}
啊,我明白你的意思了。用破折號替換雙破折號,不用任何東西代替破折號!關於貪婪修飾符也很好! –