我正在尝试解析看起来像shell命令的字符串。这些命令的总体结构如下:
command value -arg1name arg1val -arg2name arg2val ... -argMname argMval
举个例子
abc cmdh1521 -x 123 -y sadg -zzz 563sd
我正在使用Python re模块来解析、搜索和分组字符串,以便得到这样的输出
(command, value, ((-arg1name, arg1val), (arg2name, arg2val), ... (argMname, argMval))
我尝试了以下命令集,但我的输出不是我想要的。你知道吗
import re
cmd = "abc cmdh1521 -x 123 -y sadg -zzz 563sd"
_parser = r"^([a-z]+)\s{1}(\S*)((\s+\-[a-z]+\s{1}\S+)*)"
out = re.search(_parser, cmd)
print out.groups()
这是我得到的结果
('abc', 'cmdh1521', ' -x 123 -y sadg -zzz 563sd', ' -zzz 563sd')
我做错什么了?你知道吗
我可以很容易地实现一个非正则表达式的解决方案,但我想知道是否有一个正则表达式,可以给我我想要的那种解析?你知道吗
在这种情况下,您必须使用如下所示的正向lookback regex:
说明和示例位于: Demo
然后根据
-
之前存在的空间再次拆分或者
相关问题 更多 >
编程相关推荐