私はGolang regexパッケージを使用しています。ソース文字列だけでなく、regex ReplaceAllStringFuncを引数に使用したいと思います。私はのようなものを持っていると思いGolang正規表現でallを引数に置き換えるにはどうすればよいですか?
"<img src=\"https://stackoverflow.com/a/1.jpg\" /> <img src=\"https://stackoverflow.com/a/2.jpg\" /> <img src=\"https://stackoverflow.com/a/3.jpg\" />"
:
例えば、私はこのテキストに( "A" または何か他のものに変更し、 "M")に
"<img src=\"/m/1.jpg\" /> <img src=\"/m/2.jpg\" /> <img src=\"/m/3.jpg\" />"
を更新します:
func UpdateText(text string) string {
re, _ := regexp.Compile(`<img.*?src=\"(.*?)\"`)
text = re.ReplaceAllStringFunc(text, updateImgSrc)
return text
}
// update "/m/1.jpg" to "https://stackoverflow.com/a/1.jpg"
func updateImgSrc(imgSrcText, prefix string) string {
// replace "m" by prefix
return "<img src=\"" + newImgSrc + "\""
}
私はReplaceAllStringFuncは、引数をサポートしていない、ドキュメントをチェックしますが、何が私を達成するための最良の方法だろう目標?
もっと一般的には、あるパターンのすべての出現を見つけて、ソース文字列+新しいパラメータで構成された新しい文字列でそれぞれを更新したいと思います。
いいえ、正規表現でHTMLを処理したくないです。 – Volker
@Volker、ええと、テキストはHTML全体ではなく、ニュース記事の内容ですが、あなたの意見では最高の解決策は何でしょうか?私はstrings.Replaceがパターンに簡単にマッチすることはできないと思います。 – seaguest
適切なHTMLパーサを使用してください。 ['golang.org/x/net/html'](https://godoc.org/golang.org/x/net/html)も一つの選択肢であり、[' github.com/PuerkitoBio/goquery' ](https://godoc.org/github.com/PuerkitoBio/goquery)便利です。何があるかの概要を知るには[この検索](https://godoc.org/?q=html)を実行してください。 – kostix