Twisted の実装を見てくださいhttp://twistedmatrix.com/
残念ながら時間がありません。他の誰かがここに貼り付けてくれるかもしれません。
編集
さて、私は戻ってきましたが、奇妙なことに、まだ誰も貼り付けていないので、ここにあります:
http://twistedmatrix.com/trac/browser/trunk/twisted/words/protocols/irc.py#54
def parsemsg(s):
"""Breaks a message from an IRC server into its prefix, command, and arguments.
"""
prefix = ''
trailing = []
if not s:
raise IRCBadMessage("Empty line.")
if s[0] == ':':
prefix, s = s[1:].split(' ', 1)
if s.find(' :') != -1:
s, trailing = s.split(' :', 1)
args = s.split()
args.append(trailing)
else:
args = s.split()
command = args.pop(0)
return prefix, command, args
parsemsg(":test!~test@test.com PRIVMSG #channel :Hi!")
# ('test!~test@test.com', 'PRIVMSG', ['#channel', 'Hi!'])
この関数は、IRC RFC で説明されている EBNF に厳密に従います。