【发布时间】:2015-11-19 18:44:44
【问题描述】:
(-[a-zA-Z]+=?)+(([^\s]+)|(\s+((["'])(?:(?=(\\?))\2.)*?\6)))
我有一堆命令行参数。
-arg1 -arg2 -arg3=500 -arg4=-250,200,50.0 -arg5 "Hello World" -arg6 "[I don't know whats going on /here/]"
我不是特别擅长正则表达式,并且正在使用regexr.com 来验证我的结果。 Regex.Matches 与此站点的表达式通常可以复制和粘贴没有问题。这次不是。
使用该命令行字符串的结果如下:
Count = 6
[0]: "-arg1"
[1]: "-arg2"
[2]: "-arg3=500"
[3]: "-arg4=-250,200,50.0"
[4]: "-arg5"
[5]: "-arg6"
这是循环通过 Regex.Matches 和每个 Captures
我不明白为什么引号不会成为比赛的一部分。 |(\s+((["'] 部分是否存在空格问题?
【问题讨论】:
-
您忘记添加匹配/捕获所需的内容,输出应该是什么?请注意,正则表达式非常笨拙,需要好好清理。
-
我没有用 C# 编写过控制台应用程序,但大多数其他语言都有一个库。当然,C# 中有一个不需要正则表达式的库。看看这个线程:stackoverflow.com/q/491595/179311.
-
遗憾的是,我对使用外部库不感兴趣! :P 但是感谢任何更感兴趣的人。