Java - 如何将irc消息解析为人类可读的

时间:2014-01-09 09:36:24

标签: java irc

我正在用Java创建一个irc客户端。它工作正常,但来自服务器的消息有点“混乱” 例如:User1!webirc@1.9.com PRIVMSG #channel :test。所以我想知道如何将irc消息解析为人类可读的?这是我为irc消息找到^(:(\\S+) )?(\\S+)( (?!:)(.+?))?( :(.+))?$的正则表达式。

1 个答案:

答案 0 :(得分:1)

此处记录了IRC协议:https://tools.ietf.org/html/rfc2812

  

2.3.1增强BNF中的消息格式

     

必须从连续的流中提取协议消息      字节。目前的解决方案是指定两个字符,CR和      LF,作为消息分隔符。静默忽略空消息,      它允许在消息之间使用序列CR-LF      额外的问题。

     

将解压缩的消息解析为组件,       和参数列表()。

The Augmented BNF representation for this is:

message    =  [ ":" prefix SPACE ] command [ params ] crlf
prefix     =  servername / ( nickname [ [ "!" user ] "@" host ] )
command    =  1*letter / 3digit
params     =  *14( SPACE middle ) [ SPACE ":" trailing ]
           =/ 14( SPACE middle ) [ SPACE [ ":" ] trailing ]

nospcrlfcl =  %x01-09 / %x0B-0C / %x0E-1F / %x21-39 / %x3B-FF
                ; any octet except NUL, CR, LF, " " and ":"
middle     =  nospcrlfcl *( ":" / nospcrlfcl )
trailing   =  *( ":" / " " / nospcrlfcl )

SPACE      =  %x20        ; space character
crlf       =  %x0D %x0A   ; "carriage return" "linefeed"