我正在尝试解析看起来像shell命令的字符串.这些命令的一般结构如下:command value -arg1name arg1val -arg2name arg2val ... -argMname argMval这是一个例子abc cmdh1521 -x 123 -y sadg -zzz 563sd我正在使用Pytho...

我正在尝试解析看起来像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')
我究竟做错了什么?
我可以轻松地实现非正则表达式解决方案,但是我想知道是否有一个正则表达式可以为我提供所需的解析?
解决方法:
在这种情况下,您将必须使用正向正则表达式,如下所示:
(?<=-)(\w+) ([\w\d]+)
说明和示例位于:
Demo
沃梦达教程
本文标题为:python-正则表达式用于解析诸如字符串之类的shell命令


基础教程推荐
猜你喜欢
- python-为什么在Windows下wx.Yield()显然不屈服 2023-11-12
- Linux下Python2升级Python3 2023-09-03
- Python实现视频转换为字符画详解 2023-08-09
- Python中并发、进程、线程的总结 2023-09-03
- 与Python中的Unix过滤器进程进行通信 2023-11-12
- python爬取免费代理并验证代理是否可用 2023-08-04
- 利用Python将彩色图像转为灰度图像的两种方法 2023-08-04
- python的内存管理 2023-09-03
- 停止使用Python 2:您需要了解的关于Python 3的内容| Hackaday 2023-09-04
- python模拟进程状态 2023-11-12