Go の ReplaceAllString 関数は、置換文字列内の後方参照と変数参照をどのように処理しますか?

Barbara Streisand
リリース: 2024-11-01 23:34:29
オリジナル
159 人が閲覧しました

How does Go's ReplaceAllString function handle backreferences and variable references in replacement strings?

Go ReplaceAllString Decoded

Go の ReplaceAllString 関数を使用すると、指定された入力文字列内で一致した部分文字列を置換できます。次のコード スニペットを考えてみましょう:

<code class="go">re := regexp.MustCompile("a(x*)b")
fmt.Println(re.ReplaceAllString("-ab-axxb-", "T"))
fmt.Println(re.ReplaceAllString("-ab-axxb-", ""))
fmt.Println(re.ReplaceAllString("-ab-axxb-", "W"))
fmt.Println(re.ReplaceAllString("-ab-axxb-", "W"))</code>
ログイン後にコピー

出力:

-T-T-
--xx-
---
-W-xxW-
ログイン後にコピー

説明:

2 。 -ab-axxb- $1 に置き換えられます (RemoveAllString の例)

これにより、一致した部分文字列が正規表現内の最初のキャプチャ グループの内容に置き換えられます。この場合、キャプチャ グループは a と b の間の文字と一致するため、出力は -xx-.

3 となります。 -ab-axxb- $1W に置き換えられます (RemoveAllString の例)

この置換では、一致する部分文字列を識別するために $1 後方参照が使用されますが、それに「W」が追加されます。ただし、正規表現には 1W という名前のキャプチャ グループがないため、$1W 参照は空です。その結果、出力は ---.

4 となります。 -ab-axxb- ${1}W に置き換えられます (RemoveAllString の例)

この置換は前の置換と似ていますが、後方参照 ($1) を中括弧で囲んでいます。 Expand のドキュメントによると、中括弧は後方参照ではなく変数参照を示すために使用されます。 1 は正規表現の変数ではないため、出力は -W-xxW-.

となります。

以上がGo の ReplaceAllString 関数は、置換文字列内の後方参照と変数参照をどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!