Go の ReplaceAllString 関数の出力を理解する
Go の ReplaceAllString 関数は、文字列内の正規表現の一致をすべて置換する方法を提供します。提供されているコード例の最初の出力は理解するのが簡単ですが、その後の出力は不可解に見えるかもしれません。
出力 2 と 4: $1 後方参照を理解する
2 番目4 番目の出力、$1 は、正規表現 a(x)b の最初のかっこのセットで定義されたキャプチャ グループを指します。このキャプチャ グループは、任意の数の「x」文字で構成される文字列を照合してキャプチャします。
出力 3: $1 についてW
3 番目の出力 (fmt.Println(re.ReplaceAllString("-ab-axxb-", "$1W"))) が最も興味深いです。 ReplaceAllString のドキュメントには、置換パターン内の "$ 記号" は Expand 関数のように解釈されると記載されています:
repl 内では、$ 記号は ExpandExpand は以下を指定します:
テンプレートでは、変数は $name または ${name} 形式の部分文字列で表されます。ここで、name は空ではない文字、数字のシーケンスです。 、およびアンダースコア。範囲外または一致しないインデックス、または正規表現に存在しない名前への参照は、空のスライスに置き換えられます。
$name フォームでは、名前は次のように解釈されます。可能な限り長く: $1x は ${1}x ではなく ${1x} と同等、$10 は ${1}0 ではなく ${10} と同等です。
空の文字列 ("") に置き換えられます。
以上が正規表現でキャプチャ グループ「1W」が定義されていない場合、Go の ReplaceAllString 関数は「$1W」の置換をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。