Regex 通过Go中的正则表达式在字符串中查找字符串

Regex 通过Go中的正则表达式在字符串中查找字符串,regex,go,Regex,Go,我正在尝试编写一个正则表达式,向我返回一个字符串 我有一个完整的字符串,如下所示: @badges=moderator/1,premium/1;color=#00FF80;display-name=gempir;emotes=;id=d0358df2-f0a1-4600-910e-515ec52b1baa;mod=1;room-id=99659894;sent-ts=1489250823035;subscriber=0;tmi-sent-ts=1489250823211;turbo=0;user

我正在尝试编写一个正则表达式,向我返回一个字符串

我有一个完整的字符串,如下所示:

@badges=moderator/1,premium/1;color=#00FF80;display-name=gempir;emotes=;id=d0358df2-f0a1-4600-910e-515ec52b1baa;mod=1;room-id=99659894;sent-ts=1489250823035;subscriber=0;tmi-sent-ts=1489250823211;turbo=0;user-id=77829817;user-type=mod :gempir!gempir@gempir.tmi.twitch.tv PRIVMSG #gempbot :!status
以及如何查找命令“PRIVMSG”,因为存在具有不同命令的类似完整字符串。像这样:

@ban-duration=20;ban-reason=Banned\slink;room-id=11148817;target-user-id=78424343 :tmi.twitch.tv CLEARCHAT
如果您感兴趣,这些是带有ircv3标签的twitch irc消息

现在我有了这个正则表达式:

^@(.*)\s:(.*?)tmi.twitch.tv\s
如何在Go中使用正则表达式或类似的正则表达式来查找我要查找的字符串

我想避免一次又一次的分裂,因为这似乎有点不合理,也很难阅读。我认为正则表达式可以解决我所有的问题。

下面的正则表达式应该可以解决这个问题

(?<=twitch.tv\s)\w+(?=\s#)

(?只是为了不被锚定到web地址(可以在某个时间更改),我更喜欢这种:

([A-Z]+)(\s#.+)?$

是什么阻止你在Go中使用相同的模式?Go有一个regexp包:嗯,regex.Match将返回字符串的整个开头,等等。我不知道如何正确使用regex。也许你应该使用FindAllMatch或FindAllSubmatch。Go regex不支持任何lookarounds。