using System;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var pattern = @"(?i)(?<=^\w(?<c>\w)*) (\k<c>(?<-c>)\w+ ?|(?<w>\w+) ?)+$(?(c)(?!))";
var input = new string[] {
"RPM Package Manager",
"Wine is not an emulator",
"GNU is not Unix",
"Golf is not an acronym",
"X is a valid acronym"
};
var r = new Regex(pattern);
foreach (var str in input)
{
var m = r.Match(str);
Console.WriteLine(m.Success);
for (int i = 0; i < m.Groups["w"].Captures.Count; ++i)
Console.WriteLine(m.Groups["w"].Captures[i].Value);
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7CgpwdWJsaWMgY2xhc3MgVGVzdAp7CglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CgkJdmFyIHBhdHRlcm4gPSBAIig/aSkoPzw9Xlx3KD88Yz5cdykqKSAoXGs8Yz4oPzwtYz4pXHcrID98KD88dz5cdyspID8pKyQoPyhjKSg/ISkpIjsKICAgICAgICB2YXIgaW5wdXQgPSBuZXcgc3RyaW5nW10gewogICAgICAgICAgICAiUlBNIFBhY2thZ2UgTWFuYWdlciIsCiAgICAgICAgICAgICJXaW5lIGlzIG5vdCBhbiBlbXVsYXRvciIsCiAgICAgICAgICAgICJHTlUgaXMgbm90IFVuaXgiLAogICAgICAgICAgICAiR29sZiBpcyBub3QgYW4gYWNyb255bSIsCiAgICAgICAgICAgICJYIGlzIGEgdmFsaWQgYWNyb255bSIKICAgICAgICB9OwoKICAgICAgICB2YXIgciA9IG5ldyBSZWdleChwYXR0ZXJuKTsKICAgICAgICBmb3JlYWNoICh2YXIgc3RyIGluIGlucHV0KQogICAgICAgIHsKICAgICAgICAgICAgdmFyIG0gPSByLk1hdGNoKHN0cik7CiAgICAgICAgICAgIENvbnNvbGUuV3JpdGVMaW5lKG0uU3VjY2Vzcyk7CiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgbS5Hcm91cHNbInciXS5DYXB0dXJlcy5Db3VudDsgKytpKQogICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUobS5Hcm91cHNbInciXS5DYXB0dXJlc1tpXS5WYWx1ZSk7CiAgICAgICAgfQoJfQp9