using System;
using System.IO;
using System.Text;
using System.Text.RegularExpressions;
public class Program
{
private static readonly Regex _clRegex = new Regex(
@"^(?<command>blah)((\s+(?<option>--.+?))*(\s+(?<fspec>.*?))*)+$",
RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
public static void Main(string[] args)
{
string demo = "blah --arg1 --arg2 --etc doh";
var sb = new StringBuilder();
foreach (Match m in _clRegex.Matches(demo))
{
foreach (var kind in new [] {"command", "option", "fspec"})
{
var g = m.Groups[kind];
if (g.Success) foreach (Capture cap in g.Captures)
{
switch(kind)
{
case "command": sb.Append(cap); break;
case "fspec": sb.Append(" " + Path.Combine(Directory.GetCurrentDirectory(), cap.Value)); break;
case "option": sb.Append(" " + cap); break;
}
}
}
}
Console.WriteLine(sb.ToString().Trim());
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uSU87CnVzaW5nIFN5c3RlbS5UZXh0Owp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgUHJvZ3JhbQp7CiAgICBwcml2YXRlIHN0YXRpYyByZWFkb25seSBSZWdleCBfY2xSZWdleCA9IG5ldyBSZWdleCgKICAgICAgICAgICAgQCJeKD88Y29tbWFuZD5ibGFoKSgoXHMrKD88b3B0aW9uPi0tLis/KSkqKFxzKyg/PGZzcGVjPi4qPykpKikrJCIsCiAgICAgICAgICAgIFJlZ2V4T3B0aW9ucy5Db21waWxlZCB8IFJlZ2V4T3B0aW9ucy5DdWx0dXJlSW52YXJpYW50IHwgUmVnZXhPcHRpb25zLklnbm9yZUNhc2UpOwoKICAgIHB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKHN0cmluZ1tdIGFyZ3MpCiAgICB7CiAgICAgICAgc3RyaW5nIGRlbW8gPSAiYmxhaCAtLWFyZzEgLS1hcmcyIC0tZXRjIGRvaCI7CgogICAgICAgIHZhciBzYiA9IG5ldyBTdHJpbmdCdWlsZGVyKCk7CiAgICAgICAgZm9yZWFjaCAoTWF0Y2ggbSBpbiBfY2xSZWdleC5NYXRjaGVzKGRlbW8pKQogICAgICAgIHsKICAgICAgICAgICAgZm9yZWFjaCAodmFyIGtpbmQgaW4gbmV3IFtdIHsiY29tbWFuZCIsICJvcHRpb24iLCAiZnNwZWMifSkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgdmFyIGcgPSBtLkdyb3Vwc1traW5kXTsKICAgICAgICAgICAgICAgIGlmIChnLlN1Y2Nlc3MpIGZvcmVhY2ggKENhcHR1cmUgY2FwIGluIGcuQ2FwdHVyZXMpCiAgICAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgICAgc3dpdGNoKGtpbmQpCiAgICAgICAgICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJjb21tYW5kIjogc2IuQXBwZW5kKGNhcCk7IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICAgICBjYXNlICJmc3BlYyI6ICAgc2IuQXBwZW5kKCIgIiArIFBhdGguQ29tYmluZShEaXJlY3RvcnkuR2V0Q3VycmVudERpcmVjdG9yeSgpLCBjYXAuVmFsdWUpKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIm9wdGlvbiI6ICBzYi5BcHBlbmQoIiAiICsgY2FwKTsgYnJlYWs7CiAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgfQogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICBDb25zb2xlLldyaXRlTGluZShzYi5Ub1N0cmluZygpLlRyaW0oKSk7CiAgICB9Cn0K