How can I specify to only match the first occurrence of a regular expression in C# using Regex method?
Here's an example:
string text = @"<link href=""/_layouts/OracleBI/OracleBridge.ashx?RedirectURL=res/sk_oracle10/b_mozilla_4/common.css"" type=""text/css"" rel=""stylesheet""></link></link>";
string pattern = @"(<link).+(link>)";
Regex myRegex = new Regex(pattern, RegexOptions.IgnoreCase);
Match m = myRegex.Match(text); // m is the first match
while (m.Success)
{
// Do something with m
Console.Write(m.Value + "\n");
m = m.NextMatch(); // more matches
}
Console.Read();
I would like this to only replace up to the first <\link>
. And then also do the same for the rest of these matches.
Best Answer
Regex.Match(myString) returns the first match it finds.
Subsequent calls to
NextMatch()
on the resultant object fromMatch()
will continue to match the next occurrences, if any.For example:
EDIT: If you're parsing HTML, I would seriously consider using the HTML Agility Pack. You will save yourself many, many headaches.