我需要一个正则表达式解析如命令:定期解析命令行表达
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
copy 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);
}
你试图解析的字符串中的命令(来自用户输入,文件等)还是它们在初始化应用程序时传递的字面命令行参数? – newfurniturey
是的,它是我需要解析问题的一个字符串,它在命令中可以是一个空格,并且我不能通过空格拆分它。 – Aram
您可以发布一个描述这种工作方式的输出示例吗? :) –