using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using System.Linq;
public class Test
{
public static void Main()
{
var strs = new List<string>() { "Boy has a dog and a cat.",
"Boy something a gerbil.",
"Sally owns a cat." };
foreach (var s in strs)
{
var results = Regex.Matches(s, @"(?<=^Boy\b.*?)\b(?:dog|cat|gerbil)\b")
.Cast<Match>()
.Select(m => m.Value)
.ToList();
if (results.Count > 0) {
Console.WriteLine("{0}:\n[{1}]\n------", s, string.Join(", ", results));
}
else
{
Console.WriteLine("{0}:\nNO MATCH!\n------", s);
}
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLlRleHQuUmVndWxhckV4cHJlc3Npb25zOwp1c2luZyBTeXN0ZW0uTGlucTsKcHVibGljIGNsYXNzIFRlc3QKewoJcHVibGljIHN0YXRpYyB2b2lkIE1haW4oKQoJewoJCXZhciBzdHJzID0gbmV3IExpc3Q8c3RyaW5nPigpIHsgIkJveSBoYXMgYSBkb2cgYW5kIGEgY2F0LiIsIAoJCQkiQm95IHNvbWV0aGluZyBhIGdlcmJpbC4iLAoJCQkiU2FsbHkgb3ducyBhIGNhdC4iIH07CgkJZm9yZWFjaCAodmFyIHMgaW4gc3RycykKCQl7CgkJCXZhciByZXN1bHRzID0gUmVnZXguTWF0Y2hlcyhzLCBAIig/PD1eQm95XGIuKj8pXGIoPzpkb2d8Y2F0fGdlcmJpbClcYiIpCgkJICAgICAgICAuQ2FzdDxNYXRjaD4oKQoJCSAgICAgICAgLlNlbGVjdChtID0+IG0uVmFsdWUpCgkJICAgICAgICAuVG9MaXN0KCk7CgkJICAgICBpZiAocmVzdWx0cy5Db3VudCA+IDApIHsKCQkJQ29uc29sZS5Xcml0ZUxpbmUoInswfTpcblt7MX1dXG4tLS0tLS0iLCBzLCBzdHJpbmcuSm9pbigiLCAiLCByZXN1bHRzKSk7CgkJICAgICB9CgkJICAgICBlbHNlCgkJICAgICB7CgkJICAgICAJQ29uc29sZS5Xcml0ZUxpbmUoInswfTpcbk5PIE1BVENIIVxuLS0tLS0tIiwgcyk7CgkJICAgICB9CgkJfQoJfQp9