我需要一个正则表达式来解析命令,例如:
C:\Program Files\Internet Explorer\iexplore.exe https:\www.google.com
C:\Program Files\Internet Explorer\iexplore.exe http:\www.google.com
C:\Program Files\Internet Explorer\iexplore .exe www.google.com
iexplore.exe https:\www.google.com
复制 C:\test.txt D:\
关键是我想将第一部分作为命令,将其他部分作为参数。命令可以是任何东西,包括,.bat
等。.vbs
.exe
如果命令中没有空格,则找到一个正常工作的正则表达式。
string str = @"C:\xcopy D:\test.txt D:\Test";
string pattern = @"^(?:""([^""]*)""\s*|([^""\s]+)\s*)+";
Regex parseDir = new Regex(pattern, RegexOptions.IgnoreCase);
if(parseDir.IsMatch(str))
{
Match dir = parseDir.Match(str);
var captures = dir.Groups[1].Captures.Cast<Capture>().Concat(
dir.Groups[2].Captures.Cast<Capture>()).
OrderBy(x => x.Index).
ToArray();
string cmd = captures[0].Value;
string arguments = string.Empty;
for (int i = 1; i < captures.Length; i++)
{
arguments += captures[i].Value + " ";
}
Console.WriteLine(cmd);
Console.WriteLine(arguments);
}