Puis-je demander un pointeur sur C# et Regex. J'ai la routine qui fonctionne bien ci-dessous qui trouve des liens au sein de CSS. Si je voulais réécrire les liens que je trouve au fur et à mesure, puis avoir une copie d'une chaîne à la fin de celle-ci qui représente le texte CSS initial mais avec les liens réécrits en place, comment ferais-je cela?Question Regex, comment mettre à jour cette routine C# RegexMatches pour mettre à jour/remplacer les éléments trouvés?
var resultList = new List<Uri>();
string cssText = new WebClient().DownloadString(uri.ToString());
MatchCollection matches = Regex.Matches(cssText, @"url\(('|"")?([^']*?)('|"")?\)", RegexOptions.IgnoreCase);
foreach (Match match in matches)
{
var groups = match.Groups;
var relUrl = groups[2].ToString();
var itemUri = new Uri(uri, relUrl);
// WANT TO CHANGE/REWRITE THE URI HERE
resultList.Add(itemUri);
}
// WANT TO HAVE ACCESS TO AN UPDATED "cssText" HERE THAT INCLUDES THE REWRITTEN LINKS
grâce
PS. La capture est que je dois être capable de passer le segment d'URL que je trouve (c'est-à-dire dans le groupe de capture 2, pour lequel "Regex.Replace" je qualifierais de $ 2), à une fonction pour élaborer la chaîne de remplacement. Je ne semble pas être en mesure de le faire avec cette approche:
Regex.Replace(cssText, regexStr, @"url($1" + fn("$2") + @"$3)") //DOES NOT SEEM TO WORK
Des idées?
« NE SEMBLE PAS AU TRAVAIL »? De quelle façon? – Juliet