当前位置:  开发笔记 > 编程语言 > 正文

如何使用正则表达式解析命令行?

如何解决《如何使用正则表达式解析命令行?》经验,为你挑选了3个好方法。

我想在单个字符串参数中拆分类似字符串的命令行.如何查看正则表达式.问题是参数可以引用.例如:

"param 1"param2"param 3"

应该导致:

param 1,param2,param 3



1> 小智..:

您不应该使用正则表达式.编写解析器,或使用您的语言提供的解析器.

我不明白为什么我会为此而投票.这是如何在Python中完成的:

>>> import shlex
>>> shlex.split('"param 1" param2 "param 3"')
['param 1', 'param2', 'param 3']
>>> shlex.split('"param 1" param2 "param 3')
Traceback (most recent call last):
    [...]
ValueError: No closing quotation
>>> shlex.split('"param 1" param2 "param 3\\""')
['param 1', 'param2', 'param 3"']

现在告诉我,破坏你的大脑关于正则表达式如何解决这个问题是值得的麻烦.


绝对的废话.对于正则表达式来说,这是一个简单的问题,它与解析XML没有任何共同之处.

2> Sam Meldrum..:

我倾向于使用regexlib来解决这类问题.如果您访问:http://regexlib.com/并搜索"命令行",您将找到三个结果,看起来他们正在尝试解决此问题或类似问题 - 应该是一个良好的开端.

这可能有效:http: //regexlib.com/Search.aspx?k = command + line&c = -1&m = -1&ps = 20



3> Greg Hewgill..:

不考虑实现语言,你的正则表达式看起来像这样:

("[^"]*"|[^"]+)(\s+|$)

第一部分"[^"]*"查找不包含嵌入引号的带引号的字符串,第二部分[^"]+查找一系列非引号字符.所述\s+匹配的空间分离序列,和$所述字符串的末尾匹配.

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有