我想解析看起來像shell命令的字符串。這些命令的一般結構如下:正則表達式用於解析像字符串的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')
我在做什麼錯?
我可以很容易地實現非正則表達式的解決方案,但我想知道,如果有,可以給我我想要的那種分析的正則表達式?
我能得到的那種解析我想要的,而不必求助於手動分割這些個別字符串喜歡你做了什麼? – siva82kb
檢查我的更新....... –