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.
I believe you just need to add a lazy qualifier on the first example. Whenever a wild card is “eating too much”, you either need a lazy qualifier on the wild card or, in a more complicated scenario, look ahead. Add a lazy qualifier at the top (
.+?in place of.+), and you should be good.