原始IRC输出尼克和消息解析通过Regex

本文关键字:Regex 消息 IRC 输出 原始 | 更新日期: 2023-09-27 18:14:09

我正试图解析Twitch IRC聊天到一个更可读的方式。我从未使用过Regex,也不知道如何使用它(即使在阅读了大量教程之后)

这是原始输出:

:nick!nick@nick.tmi.twitch.tv PRIVMSG channel :

我想要两个正则表达式解析nick和消息单独使用,谢谢!

原始IRC输出尼克和消息解析通过Regex

正则表达式不是这个问题的解决方案。如果你真的想要沿着这条路走下去(但是不要——继续读下去!),那么你可以使用像这样的东西整个信息:

:(?<nick>[^ ]+?)'!(?<user>[^ ]+?)@(?<host>[^ ]+?) PRIVMSG (?<target>[^ ]+?) :(?<message>.*)

在nick、用户名、主机名、通道和消息上定义了捕获组。我还没有测试过,而且它在几乎所有其他IRC事件中都会惨败,并且会有方法破坏它或绕过匹配,因为它是IRC的错误语法工具:它就像用螺丝刀锤钉子一样-虽然它有时工作,但比它需要的更难,并且可以通过大量的时间,精力和痛苦来使其更好地工作;你为什么不用锤子呢?

一个更好的解决方案是简单地解析消息。RFC1459和RFC2812中的IRC规范在这里给出了一些非常有用的提示。根据经验,我的建议是分割":"(空格然后冒号)——这是消息的最后一个参数,然后用空格分割前一半。如果列表中的第一个条目以空格开头,再将它除以!@表示部分昵称/用户名/主机名元组。遵循此方法,您将拥有一个比使用正则表达式构建的解析器更健壮和可扩展的解析器的基础。

如果你这样做是作为一个学习练习,很好!如果没有,您可能需要考虑使用预构建的库来为您处理所有的IRC通信。