如何正确匹配 IRC 上的私人消息?
How can I properly match a private message on IRC?
我正在制作一个 irc 库,我似乎无法仅匹配私人消息,它还匹配版本字符串。
正则表达式
:(?P<from>.*?)!\S+\sPRIVMSG\s(?P<to>.*?)\s:(?P<msg>.+)
版本匹配
VERSION_STRING: :AkaneSenri1!~AkaneSenr@72A6C9FC.264941B0.A6596FAF.IP PRIVMSG AkaneSenri1 :VERSION
MATCHED: AkaneSenri1', u'AkaneSenri1', u'\x01VERSION\x01
PRIVATE_MESSAGE_STRING: :AkaneSenri1!~AkaneSenr@72A6C9FC.264941B0.A6596FAF.IP PRIVMSG AkaneSenri1 :T
MATCHED: (u'AkaneSenri1', u'AkaneSenri1', u'T') # is what I want
我得到的是服务器在您连接时发送的版本字符串。
我需要的是,当用户向机器人发送 PM 时。 (nick/msg)
:(?P<from>.*?)!\S+\sPRIVMSG\s(?P<to>.*?)\s+:(?!VERSION)(?P<msg>.*)$
它正在寻找具有负面前瞻性的 : not followed by VERSION
(?!...)
在此处查看:https://regex101.com/r/sQ7eS6/2(单击左侧的单元测试位,然后 运行 两个测试。或将您的行粘贴到主要位)
我正在制作一个 irc 库,我似乎无法仅匹配私人消息,它还匹配版本字符串。
正则表达式
:(?P<from>.*?)!\S+\sPRIVMSG\s(?P<to>.*?)\s:(?P<msg>.+)
版本匹配
VERSION_STRING: :AkaneSenri1!~AkaneSenr@72A6C9FC.264941B0.A6596FAF.IP PRIVMSG AkaneSenri1 :VERSION
MATCHED: AkaneSenri1', u'AkaneSenri1', u'\x01VERSION\x01
PRIVATE_MESSAGE_STRING: :AkaneSenri1!~AkaneSenr@72A6C9FC.264941B0.A6596FAF.IP PRIVMSG AkaneSenri1 :T
MATCHED: (u'AkaneSenri1', u'AkaneSenri1', u'T') # is what I want
我得到的是服务器在您连接时发送的版本字符串。 我需要的是,当用户向机器人发送 PM 时。 (nick/msg)
:(?P<from>.*?)!\S+\sPRIVMSG\s(?P<to>.*?)\s+:(?!VERSION)(?P<msg>.*)$
它正在寻找具有负面前瞻性的 : not followed by VERSION
(?!...)
在此处查看:https://regex101.com/r/sQ7eS6/2(单击左侧的单元测试位,然后 运行 两个测试。或将您的行粘贴到主要位)