string input = @"cool man dog no dude yes fight son";
string pattern = @"cool (?<hello>((.)* )) (?<h>( (dude)?)) (?(h)(?<dude>((.)*)))";
MatchCollection matches = Regex.Matches(input, pattern, RegexOptions.ExplicitCapture
| RegexOptions.IgnorePatternWhitespace);
foreach (Match match in matches)
{
Console.WriteLine("dude=" + match.Groups["dude"].Value);
Console.WriteLine("hello=" + match.Groups["hello"].Value);
Console.ReadLine();
}
/*Output-
dude=
hello= man dog no dude yes fight son
*/
But the required output is:
/*Output-
dude=yes fight son
hello= man dog no
*/
The target is that i want to capture "strings that have cool as first 'word' and have 'dude' word as optional in between".
Now,I want string that follows word "cool" ("man dog no") until "dude" word comes or end comes.
if "dude" word comes,I want the string that follows word "dude".
Can anybody explain me why the output is not correct or where i am wrong?
Thanks in advance.