using System;
using System.Collections.Generic;
using System.Linq;
using System.Text.RegularExpressions;
using System.IO;
using System.Text;
public class Test
{
public static void Main()
{
string pattern = @"\A(?:\.(?<exName>[A-Za-z]+)\((?<exVal>[^()]*)\))+\z";
var strings = new List<string>() {
".Foo().Bar(20).Baz(Hello)",
".Foo().Bar(30)k.Baz(Hi)hgjfvg",
".Foo(test).Bar(40).Baz(Bye)"
};
foreach (var input in strings)
{
foreach (Match m in Regex.Matches(input, pattern))
{
m.Groups["exName"]
.Captures.Select(c => c.Value)
.Zip(
m.Groups["exVal"].Captures.Select(c => c.Value),
(exName, exVal) => exName + " -> " + exVal
).ToList()
.ForEach(s => Console.WriteLine(s));
Console.WriteLine("---------------");
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5UZXh0LlJlZ3VsYXJFeHByZXNzaW9uczsKdXNpbmcgU3lzdGVtLklPOwp1c2luZyBTeXN0ZW0uVGV4dDsKCnB1YmxpYyBjbGFzcyBUZXN0CnsKCXB1YmxpYyBzdGF0aWMgdm9pZCBNYWluKCkKCXsKCQlzdHJpbmcgcGF0dGVybiA9IEAiXEEoPzpcLig/PGV4TmFtZT5bQS1aYS16XSspXCgoPzxleFZhbD5bXigpXSopXCkpK1x6IjsKCQkKCQl2YXIgc3RyaW5ncyA9IG5ldyBMaXN0PHN0cmluZz4oKSB7CgkJICAgICIuRm9vKCkuQmFyKDIwKS5CYXooSGVsbG8pIiwKCQkgICAgIi5Gb28oKS5CYXIoMzApay5CYXooSGkpaGdqZnZnIiwKCQkgICAgIi5Gb28odGVzdCkuQmFyKDQwKS5CYXooQnllKSIKCQkgICAgfTsKCQlmb3JlYWNoICh2YXIgaW5wdXQgaW4gc3RyaW5ncykKCQl7CgkJICAgIGZvcmVhY2ggKE1hdGNoIG0gaW4gUmVnZXguTWF0Y2hlcyhpbnB1dCwgcGF0dGVybikpCgkJICAgIHsKCQkgICAgICAgIG0uR3JvdXBzWyJleE5hbWUiXQoJCSAgICAgICAgLkNhcHR1cmVzLlNlbGVjdChjID0+IGMuVmFsdWUpCgkJICAgICAgICAuWmlwKAoJCSAgICAgICAgICAgIG0uR3JvdXBzWyJleFZhbCJdLkNhcHR1cmVzLlNlbGVjdChjID0+IGMuVmFsdWUpLAoJCSAgICAgICAgICAgIChleE5hbWUsIGV4VmFsKSA9PiBleE5hbWUgKyAiIC0+ICIgKyBleFZhbAoJCSAgICAgICAgKS5Ub0xpc3QoKQoJCSAgICAgICAgLkZvckVhY2gocyA9PiBDb25zb2xlLldyaXRlTGluZShzKSk7CgkJICAgICAgICBDb25zb2xlLldyaXRlTGluZSgiLS0tLS0tLS0tLS0tLS0tIik7CgkJICAgIH0KCQl9Cgl9Cn0=