【发布时间】:2013-06-07 17:54:45
【问题描述】:
我想使用空格作为分隔符来拆分字符串,但是如果有多个单词用双引号或单引号括起来,那么我希望它们作为一个项目返回。
例如如果输入字符串是:
CALL "C:\My File Name With Space" /P1 P1Value /P1 P2Value
输出数组将是:
Array[0]=Call
Array[1]=C:\My File Name With Space
Array[2]=/P1
Array[3]=P1Value
Array[4]=/P1
Array[5]=P2Value
你如何使用正则表达式来做到这一点?我意识到有命令行解析器。我粗略地看了一个流行的,但它没有处理可以有多个同名参数的情况。无论如何,而不是学习如何使用命令行解析库(将其留到另一天)。我有兴趣更多地接触 RegEx 函数。
你将如何使用 RegEx 函数来解析这个?
【问题讨论】:
-
在 Main() 中不是将命令行参数作为字符串数组提供给您吗?
-
不,我正在解析文件夹中的批处理文件。
-
我不会使用正则表达式来处理这个问题。命令行中的特殊情况太多了。您最好使用来自stackoverflow.com/questions/491595/… 的建议之一,或者只编写自己的建议(这可能需要几个小时)。
-
实际上,我认为是 NDesk 不支持具有相同名称的多个参数(我可能是错的。)我感觉 RegEx 可以处理指定的 2 个要求标准。这就是我要找的。span>
-
问题比听起来更难。解析包含引号的 Windows 命令行非常奇怪。有关示例,请参阅blogs.msdn.com/b/oldnewthing/archive/2010/09/17/10063629.aspx。