package main
import (
"regexp"
"fmt"
)
func main() {
var re = regexp.MustCompile(`(?m)(?:is listening to|is watching|is playing|is editing) \[https?://osu.ppy.sh(/beatmapsets/(\d+)(#([a-z]+)?/?(\d+))?|/(b|s)/(\d+)).*\]((?: (?:-Easy|-NoFail|-HalfTime|\+HardRock|\+SuddenDeath|\+Perfect|\+DoubleTime|\+Nightcore|\+Hidden|\+Flashlight|~Relax~|~AutoPilot~|-SpunOut|\|Autoplay\|))*)`)
var str = `* ekgame is listening to [https://osu.ppy.sh/beatmapsets/1989906#osu/4133938 TUYU - Ame o Abiru]
* ekgame is listening to [https://osu.ppy.sh/beatmapsets/1989906#fruits/4139282 TUYU - Ame o Abiru]
* ekgame is listening to [https://osu.ppy.sh/beatmapsets/1989906#osu/4133938 TUYU - Ame o Abiru] +HardRock ~Relax~
* ekgame is listening to [https://osu.ppy.sh/b/4133938 TUYU - Ame o Abiru]
* ekgame is listening to [https://osu.ppy.sh/s/1989906 TUYU - Ame o Abiru]
`
for i, match := range re.FindAllString(str, -1) {
fmt.Println(match, "found at index", i)
}
}
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/