我正在尝试使用正则表达式解析以下格式的消息:
/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>
定义多次(尽管逻辑上只有一个会匹配)。
是否有一个正则表达式可以为我解析这个字符串并提供三个匹配项?