Python中文
首页
教程
问答
标签
搜索
登录
注册
用于解析shell命令(如字符串)的Regex
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在尝试解析看起来像shell命令的字符串。这些命令的总体结构如下:</p> <pre><code>command value -arg1name arg1val -arg2name arg2val ... -argMname argMval </code></pre> <p>举个例子</p> <pre><code>abc cmdh1521 -x 123 -y sadg -zzz 563sd </code></pre> <p>我正在使用Python re模块来解析、搜索和分组字符串,以便得到这样的输出</p> <pre><code>(command, value, ((-arg1name, arg1val), (arg2name, arg2val), ... (argMname, argMval)) </code></pre> <p>我尝试了以下命令集,但我的输出不是我想要的。你知道吗</p> <pre><code>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() </code></pre> <p>这是我得到的结果</p> <pre><code>('abc', 'cmdh1521', ' -x 123 -y sadg -zzz 563sd', ' -zzz 563sd') </code></pre> <p>我做错什么了?你知道吗</p> <p>我可以很容易地实现一个非正则表达式的解决方案,但我想知道是否有一个正则表达式,可以给我我想要的那种解析?你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在这种情况下,您必须使用如下所示的正向lookback regex:</p> <pre><code>(?<=-)(\w+) ([\w\d]+) </code></pre> <p>说明和示例位于: <a href="https://regex101.com/r/nR3oN8/1" rel="nofollow">Demo</a></p>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何在乒乓球比赛中预测球的轨迹,对于AI球拍预测?
3 回答
如何在乒乓球游戏中阻止球
10 回答
如何在乘法和模中不乘空间?
4 回答
如何在乘法和除以2个不同的数字之间进行交换?
5 回答
如何在也是数据一部分的单个字符上拆分大字符串
3 回答
如何在乾草堆中找到針,有更好的解決方案嗎?
2 回答
如何在事件wxWidgets中传递自定义数据
10 回答
如何在事件中使用lambda i=i?
10 回答
如何在事件中心只接收最近的数据
2 回答
如何在事件发生之前保持云函数运行?
7 回答
如何在事件发生后使页面重定向到同一页面
3 回答
如何在事件回调之间保持python生成器的状态
3 回答
如何在事件处理程序(pythonsocket、sphinx)中保留docstring
6 回答
如何在事件处理程序中更改wxRichTextCtrl的光标位置?
6 回答
如何在事件处理程序中访问外部对象?
3 回答
如何在事件循环中将协程打包为正常函数?
6 回答
如何在事件循环之外运行协同程序?
7 回答
如何在事件循环结束时为并发未来的所有线程调用类方法?
9 回答
如何在事件文件中只保留一份摘要?
6 回答
如何在事件模板中添加事件
7 回答