正規表現を使用して、次の形式のメッセージを解析しようとしています:
/log/<sender>
/error/<sender>
/state/<sender>/<variable_name>
state
メッセージのタイプ、メッセージの送信者、およびメッセージがメッセージの場合は変数名を取得できるようにしたいと考えています。ログおよびエラー メッセージには、このスキーマの変数名を含めることができないことに注意してください。
私は次のパターンでこれをやってみました:
address_pattern = re.compile(
r'''/
((?P<type> log)/(?P<sender> [^/]*))
| ((?P<type> error)/(?P<sender> [^/]*))
| ((?P<type> state)/(?P<sender> [^/]*)/(?P<parameter> [^/]*))
''', re.VERBOSE)
<type>
ただし、キャプチャ グループと<sender>
が複数回定義されているため、これは有効なパターンではありません(ただし、論理的には 1 つだけが一致します)。
この文字列を解析して 3 つの一致を提供できる単一の正規表現はありますか?