Python中用于命令解析的正则表达式
我想找出在python中使用的正确正则表达式来解决我的任务。我为我使用的一个著名的通信程序编写了一个机器人 我想提取聊天信息中的所有给定信息。所以我有下面的模式 $[BOT][不必要的空白][COMMAND][不必要的空白][格式为[KEY]=[VALUE]的可选参数除以不必要的空白] 例如:Python中用于命令解析的正则表达式,python,regex,Python,Regex,我想找出在python中使用的正确正则表达式来解决我的任务。我为我使用的一个著名的通信程序编写了一个机器人 我想提取聊天信息中的所有给定信息。所以我有下面的模式 $[BOT][不必要的空白][COMMAND][不必要的空白][格式为[KEY]=[VALUE]的可选参数除以不必要的空白] 例如: $mail bot[WS]显示 $mail bot[WS][WS]show $mail bot[WS]显示[WS] $mail bot[WS]显示[WS][WS] $mail bot[WS]show[WS
bot=邮件bot
cmd=show
预期结果(对于6.到8.):
arguments=[{'a':'1'}]
预期结果(对于9.):
arguments=[{'a':'1','d':'4'}]
预期结果(对于10.):
arguments=[{'ab':'43','cd':'23'}]
我现在拥有的正则表达式如下:
^\$(?[A-Za-z\-\-+)(?{0,})(?[A-Za-z\-+)(?({1,})(?(?{0,})(?\w+=(?\w+){0,1}$
到目前为止,我在regex101上测试了给定的regex,我能够提取的是所有信息,除了参数(如果有多个参数的话)之外。
因此,案例1。到八点。正在使用给定的正则表达式,但是9。和10。不要
有人能帮我吗?谢谢大家!
致以最良好的祝愿,
mr_5p4rk_以下正则表达式与您似乎想要的匹配:
^\$(?P<bot>[A-Za-z\-_]+) (?P<cmd>[A-Za-z\-_]+)(?P<options> +(?P<argument>(?P<key>[a-z]+)=(?P<value>[0-9]+)))+
P[A-Za-z\-+]P[A-Za-z\-+]P
您遇到的问题与无效的重复模式、无效的命名组以及到处缺少空格有关。请将文本粘贴到scanPython的标准
re
模块可以匹配重复组(如您的键和值),但无法有效地捕获它们,因为每个后续匹配都会覆盖以前捕获的文本。您可能需要研究一个较新的实验性regex
模块,我相信它能够处理重复捕获(尽管我不知道详细信息)。谢谢你的建议。我会尝试一下。但与此同时,我采用了另一种方法,将字符串从键值对中分离出来,并分别分析每个部分。你的正则表达式有语法错误。@Mr5p4RK_2;如果你觉得有用,请检查答案并接受/投票?
^\$(?P<bot>[A-Za-z\-_]+) (?P<cmd>[A-Za-z\-_]+)(?P<options> +(?P<argument>(?P<key>[a-z]+)=(?P<value>[0-9]+)))+
^\$(?P<bot>[A-Za-z\-_]+) (?P<cmd>[A-Za-z\-_]+)(?P<options> +(?P<argument>(?P<key>[a-z]+)=(?P<value>[0-9]+)))(?P<options2> +(?P<argument2>(?P<key2>[a-z]+)=(?P<value2>[0-9]+)))