using System;
using System.Text.RegularExpressions;
public class Example
{
public static void Main()
{
string pattern = @"^ # begin of string
(?:(?!(?:\1|\2|\3)).)*? # ungreedy anything that is not captured by group 1,2,or 3
( # 1th capturing group
(?:\brain\b|\bsunlight\b|\bbark) # Alternation group (answers) \b word-boundaries as needed
)
(?:(?!(?:\1|\2|\3)).)*? # ungreedy anything that is not captured by group 1,2,or 3
( # 3th capturing group
(?:(?!(?:\1|\3))(?:\brain\b|\bsunlight\b|\bbark)) # Answers not captured in group 1 or 3
)
(?:(?!(?:\1|\2|\3)).)*? # ungreedy anything that is not captured by group 1,2,or 3
( # 4th capturing group
(?:(?!(?:\2|\3))(?:\brain\b|\bsunlight\b|\bbark)) # Answers not captured by group 2 or 3
)
(?:(?!(?:\1|\2|\3)).)* # anything that is not captured by group 1,2,or 3
$ # end of string";
string input = @"rain. bright sunlight. a dog's bark.
rain. bright rain. a dog's bark.
Barksunlight rain
bark sun rain
bar sunlight sunlight
Rain rain rain
sunlight rain bark
Barking dog, sunlight, rainforest
Barking elephant, green Sunlight, purple rain and other non-sense
";
RegexOptions options = RegexOptions.IgnorePatternWhitespace | RegexOptions.Multiline | RegexOptions.IgnoreCase;
foreach (Match m in Regex.Matches(input, pattern, options))
{
Console.WriteLine("'{0}' found at index {1}.", m.Value, m.Index);
}
}
}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for C#, please visit: https://msdn.microsoft.com/en-us/library/system.text.regularexpressions.regex(v=vs.110).aspx