次の形式に従って、サーバー コンソール (Multicraft) からの行を解析できるようにしたいと考えています。
"source" <[ignore]"username"> "message"
以下はチャットの例です。
[Server] <Johndonne> hello everyone!
[Chat] <[VIP][Owner]bit2shift> hey
[Chat] <[Mod]waisman> hello there
[Chat] <[Builder]bluesniper> hey john xD
私の最初の戦略は、この正規表現でした:
^(?P<source>\[[^\]]+\])?\s*<\[.+\](?P<sender>[^>]*)>\s*(?P<message>.*)$
ただし、テキスト文字列が次の場合など、ユーザー名の前に [tag] がない場合は失敗します。
[Server] <Johndonne> hello everyone!
正規表現をテストするために、 re.findall(regex, line) を使用して、パラメータを持つタプルを取得しました。何か案は?