package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?s)^(<[^>]*>)*((?:\w+\W+){35})\w.*$`)
var str = []byte(`<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vehicula lorem magna, sed commodo neque hendrerit eu. Aliquam vulputate tellus a tellus congue iaculis. Integer sit amet gravida leo. Ut hendrerit, massa non rutrum fringilla, justo sem sodales velit, vitae ornare odio mauris sed dui. Duis suscipit posuere neque vel gravida. Nam ullamcorper, justo maximus pretium iaculis, ipsum elit hendrerit turpis, eu convallis leo magna vitae neque. Praesent interdum eget quam quis ultricies.</p>
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas vehicula lorem magna, sed commodo neque hendrerit eu. Aliquam vulputate tellus a tellus congue iaculis. Integer sit amet gravida leo. Ut hendrerit, massa non rutrum fringilla, justo sem sodales velit, vitae ornare odio mauris sed dui. Duis suscipit posuere neque vel gravida. Nam ullamcorper, justo maximus pretium iaculis, ipsum elit hendrerit turpis, eu convallis leo magna vitae neque. Praesent interdum eget quam quis ultricies.</p>`)
var substitution = []byte("$2")
var count = 1 // negative counter is equivalent to global case (replace all)
str = re.ReplaceAllStringFunc(str, func(s string) string {
if count == 0 {
return s
}
count -= 1
return re.ReplaceAllString(s, substitution)
})
fmt.Println(string(str))
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Golang, please visit: https://golang.org/pkg/regexp/