replaceRE
正規表現のすべての出現箇所を置換パターンに置き換えます。
デフォルトでは、 replaceRE
関数はすべてのマッチを置換します。オプションの LIMIT パラメータを指定することで、マッチの数を制限することができます。
正規表現を指定するときは、構文を簡単にするために、解釈された文字列リテラル (二重引用符) ではなく、生の 文字列リテラル (バッククォート) を使用します。解釈された文字列リテラルを使用する場合は、バックスラッシュをエスケープする必要があります。
この関数は RE2
正規表現ライブラリを使用します。
詳細については、RE2 構文ドキュメント
を参照してください。
RE2 の \C
エスケープ シーケンスがサポートされていないことに注意してください。
で認められている構文のサブセットであり、さまざまな <a href=“https://swtch.com/~rsc/regexp/regexp3.html#caveats"target="_blank" rel=“noopener”>注意事項
があります。
以下の例では、2 つ以上連続するハイフンを 1 つのハイフンに置き換えています。
{{ $s := "a-b--c---d" }}
{{ replaceRE `(-{2,})` "-" $s }} → a-b-c-d
置換の数を 1 つに制限するには、以下のように書きます。
{{ $s := "a-b--c---d" }}
{{ replaceRE `(-{2,})` "-" $s 1 }} → a-b-c---d
置換文字列内で $1
、$2
などを使用して、以下のように、正規表現内でキャプチャされたグループを挿入できます。
{{ $s := "http://gohugo.io/docs" }}
{{ replaceRE "^https?://([^/]+).*" "$1" $s }} → gohugo.io
regex101.com を使えば、正規表現を書いてテストすることができます。始める前に、必ず Go フレーバーを選択してください。