2016-12-14 6 views
2

文字列から余分なダッシュをすべて削除しようとしています。OR正規表現で余分なダッシュを削除する

StateFileRegexDashes = regexp.MustCompile( - + |^- + |? - + $ )

上記の正規表現ではなく、私のコード内で、regex101に私のために動作するようです。 私はそれが原因の可能性が考えていた「G |グローバル修飾子」、私はReplaceAllString()

Golang遊び場で「すべて」部分によって解決されることを前提としていますhttps://play.golang.org/p/ZR72gZEhZ_
Regex101:https://regex101.com/r/tUYHo1/1

編集を
問題は私が実際に接頭辞と末尾のダッシュを削除したいところに - ダッシュをつけたものでした。

別の正規表現を使用する代わりに、私はちょうどstrings.Trim()を使用しています。

答えて

3

先頭/末尾の-シンボルを削除し、文字列内のシンボルを縮小する必要があります。あなたはダッシュが

StateFileRegexDashes = regexp.MustCompile(`--+`) 
StateFileRegexDashesRemove = regexp.MustCompile(`^-+|-+$`) 

にregexで分割され、その後、パターンの最後に--+?は常にのみ2と一致することに注意してください、またGo demo

を参照してください

func hashBotStateFile(name string) string { 
    lower := strings.ToLower(name) 
    dashes := StateFileRegex.ReplaceAllString(lower, StateFileCharReplacer) 
    trimmed := StateFileRegexDashes.ReplaceAllString(dashes, StateFileCharReplacer) 
    final := StateFileRegexDashesRemove.ReplaceAllString(trimmed, "") 
    return filepath.Join(StateFileFolder, fmt.Sprintf("%s.json", final)) 
} 

のようなものを使用する必要がありますハイフンを使用する場合は、怠惰な量指定子を greedyに設定する必要があります。

+0

ああ、私はあなたが意味するものを参照してください。ダブルダッシュをダッシュ​​で置き換え、エッジダッシュを何も置き換えないでください!欲張りの修飾子についても良い点があります! –

関連する問題