Да, вы можете. Применяется стандартное предупреждение - регулярные выражения недостаточно мощны, чтобы надежно анализировать html. Другими словами, это может на самом деле работать для вас в самых простых и контролируемых примерах, но во многих случаях это не получается.
Однако, если у вас уже написано регулярное выражение, вставьте его в Regex Hero вместе с вашим HTML, перейдите на вкладку «Заменить» и введите строку замены.
После того, как вы убедились, что он работает, нажмите Инструменты> Создать .NET Code, и вы получите ответ.
ОБНОВЛЕНИЕ: Итак, вот несовершенный пример этого в действии с использованием групп:
string strRegex = @"(?<=href="")(?<url>[^""]+)(?="")";
RegexOptions myRegexOptions = RegexOptions.IgnoreCase;
Regex myRegex = new Regex(strRegex, myRegexOptions);
string strTargetString = @"<a href=""/page.aspx"">link</a> will become <a href=""/page.aspx?id=2"">" + (char)10 + "<A hRef='http://www.google.com'><img src='pic.jpg'></a> will become <A hRef='http://www.google.com?id=2'><img src='pic.jpg'></a>";
string strReplace = "http://mysite.com${url}";
return myRegex.Replace(strTargetString, strReplace);
http://regexhero.net/tester/?id=e993fbf1-acb7-4f59-af87-94253a6e8221
Часть (?<url>[^"]+)
является именованной группой, на которую в строке замены можно ссылаться как ${url}
.
ОБНОВЛЕНИЕ № 2:
Таким образом, чтобы соответствовать только URL без знака вопроса, вы должны сделать следующее:
(?<=href=")(?![^"]*\?)(?<url>[^"]+)(?=")
Часть (?![^"]*\?)
является негативным взглядом, который добивается цели.