私は C のような構文に慣れていないので、ソース文字列内のすべての 'A' から 'B' を検索して置換するコードを書きたいと考えています。タイプ Regexp、src、および repl を設定するにはどうすればよいですか? Go ドキュメントの ReplaceAllコード スニペットは次のとおりです。
// ReplaceAll は、正規表現にすべて一致する src のコピーを返します
// repl に置き換えられました。式はサポートされていません
// (例: \1 または $1) を置換テキストに挿入します。
func (re *Regexp) ReplaceAll(src, repl []byte) []byte {
lastMatchEnd := 0; // 最新の試合の終了位置
searchPos:= 0; // 次に一致を探す位置
buf := new(bytes.Buffer);
for searchPos <= len(src) {
a := re.doExecute("", src, searchPos);
もしlen(a) == 0 {
break // もう一致しません
}
// Copy the unmatched characters before this match.
buf.Write(src[lastMatchEnd:a[0]]);
// Now insert a copy of the replacement string, but not for a
// match of the empty string immediately after another match.
// (Otherwise, we get double replacement for patterns that
// match both empty and nonempty strings.)
if a[1] > lastMatchEnd || a[0] == 0 {
buf.Write(repl)
}
lastMatchEnd = a[1];
// Advance past this match; always advance at least one character.
_, width := utf8.DecodeRune(src[searchPos:len(src)]);
if searchPos+width > a[1] {
searchPos += width
} else if searchPos+1 > a[1] {
// This clause is only needed at the end of the input
// string. In that case, DecodeRuneInString returns width=0.
searchPos++
} else {
searchPos = a[1]
}
}
// Copy the unmatched characters after the last match.
buf.Write(src[lastMatchEnd:len(src)]);
return buf.Bytes();
}