using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var strs = new[] { "aaa bbbb; Name=John Lewis; ccc ddd; Age=20;", "AAA bbbb; Age=21;", "Irrelevant", "My Name=Wiktor; no more data" };
var pattern = @"(?:\bName=(?<Name>[^;]+).*?;\s+)?(?:\bAge=(?<Age>\d+))?";
foreach (var str in strs)
{
var results = Regex.Matches(str, pattern)
.Cast<Match>()
.Where(m => m.Groups["Name"].Success || m.Groups["Age"].Success)
.Select(p => new {key=p.Groups["Name"].Value, val=p.Groups["Age"].Value} )
.ToList();
foreach (var r in results)
{
Console.WriteLine("Name: \"{0}\", Age: \"{1}\"", r.key, r.val);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzdHJzID0gbmV3W10geyAiYWFhIGJiYmI7IE5hbWU9Sm9obiBMZXdpczsgY2NjIGRkZDsgQWdlPTIwOyIsICJBQUEgYmJiYjsgQWdlPTIxOyIsICJJcnJlbGV2YW50IiwgIk15IE5hbWU9V2lrdG9yOyBubyBtb3JlIGRhdGEiIH07CiAgICAJdmFyIHBhdHRlcm4gPSBAIig/OlxiTmFtZT0oPzxOYW1lPlteO10rKS4qPztccyspPyg/OlxiQWdlPSg/PEFnZT5cZCspKT8iOwogICAgCWZvcmVhY2ggKHZhciBzdHIgaW4gc3RycykgCiAgICAJewogICAgCQl2YXIgcmVzdWx0cyA9IFJlZ2V4Lk1hdGNoZXMoc3RyLCBwYXR0ZXJuKQogICAgCQkJLkNhc3Q8TWF0Y2g+KCkKICAgIAkJCS5XaGVyZShtID0+IG0uR3JvdXBzWyJOYW1lIl0uU3VjY2VzcyB8fCBtLkdyb3Vwc1siQWdlIl0uU3VjY2VzcykKICAgIAkJCS5TZWxlY3QocCA9PiBuZXcge2tleT1wLkdyb3Vwc1siTmFtZSJdLlZhbHVlLCB2YWw9cC5Hcm91cHNbIkFnZSJdLlZhbHVlfSApCiAgICAJCQkuVG9MaXN0KCk7CiAgICAJCWZvcmVhY2ggKHZhciByIGluIHJlc3VsdHMpCiAgICAJCXsKICAgIAkJCUNvbnNvbGUuV3JpdGVMaW5lKCJOYW1lOiBcInswfVwiLCBBZ2U6IFwiezF9XCIiLCByLmtleSwgci52YWwpOwogICAgCQl9CiAgICAJfQoJfQp9