我想在单个字符串参数中拆分类似字符串的命令行.如何查看正则表达式.问题是参数可以引用.例如:
"param 1"param2"param 3"
应该导致:
param 1,param2,param 3
您不应该使用正则表达式.编写解析器,或使用您的语言提供的解析器.
我不明白为什么我会为此而投票.这是如何在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"']
现在告诉我,破坏你的大脑关于正则表达式如何解决这个问题是值得的麻烦.
我倾向于使用regexlib来解决这类问题.如果您访问:http://regexlib.com/并搜索"命令行",您将找到三个结果,看起来他们正在尝试解决此问题或类似问题 - 应该是一个良好的开端.
这可能有效:http: //regexlib.com/Search.aspx?k = command + line&c = -1&m = -1&ps = 20
不考虑实现语言,你的正则表达式看起来像这样:
("[^"]*"|[^"]+)(\s+|$)
第一部分"[^"]*"
查找不包含嵌入引号的带引号的字符串,第二部分[^"]+
查找一系列非引号字符.所述\s+
匹配的空间分离序列,和$
所述字符串的末尾匹配.