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+)|\bName=(?<Name>[^;]+)(?:.*?;\s+\bAge=(?<Age>\d+))?";
foreach (var str in strs)
{
var result = Regex.Match(str, pattern);
if (result.Success)
{
Console.WriteLine("Name: \"{0}\", Age: \"{1}\"", result.Groups["Name"].Value, result.Groups["Age"].Value);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uTGlucTsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwoKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzdHJzID0gbmV3W10geyAiYWFhIGJiYmI7IE5hbWU9Sm9obiBMZXdpczsgY2NjIGRkZDsgQWdlPTIwOyIsICJBQUEgYmJiYjsgQWdlPTIxOyIsICJJcnJlbGV2YW50IiwgIk15IE5hbWU9V2lrdG9yOyBubyBtb3JlIGRhdGEiIH07CiAgICAJdmFyIHBhdHRlcm4gPSBAIig/OlxiTmFtZT0oPzxOYW1lPlteO10rKS4qPztccyspP1xiQWdlPSg/PEFnZT5cZCspfFxiTmFtZT0oPzxOYW1lPlteO10rKSg/Oi4qPztccytcYkFnZT0oPzxBZ2U+XGQrKSk/IjsKICAgIAlmb3JlYWNoICh2YXIgc3RyIGluIHN0cnMpIAogICAgCXsKICAgIAkJdmFyIHJlc3VsdCA9IFJlZ2V4Lk1hdGNoKHN0ciwgcGF0dGVybik7CgkJCWlmIChyZXN1bHQuU3VjY2VzcykKICAgIAkJewogICAgCQkJQ29uc29sZS5Xcml0ZUxpbmUoIk5hbWU6IFwiezB9XCIsIEFnZTogXCJ7MX1cIiIsIHJlc3VsdC5Hcm91cHNbIk5hbWUiXS5WYWx1ZSwgcmVzdWx0Lkdyb3Vwc1siQWdlIl0uVmFsdWUpOwogICAgCQl9CiAgICAJfQoJfQp9