2009-11-25 8 views
1

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?

+0

« NE SEMBLE PAS AU TRAVAIL »? De quelle façon? – Juliet

Répondre

2

Utilisez Regex.Replace, ce peut être quelque chose comme ceci.

cssText = Regex.Replace(cssText, @"(url\(['""]?)(.*?)(['""]?\))", "$1"+uri+"$2$3"); 

Je ne suis pas sûr de la valeur sont dans la variable uri si

+0

merci - je vais essayer – Greg

+0

ne fonctionne pas tout à fait - je dois être en mesure d'appeler une fonction pour travailler sur la chaîne de remplacement que je veux utiliser, il semble que je ne peux pas mettre cette fonction dans le "Regex.Replace "appelez et utilisez" $ 2 "comme paramètre de la fonction - des idées? – Greg

+0

puis-je savoir ce que fn() fait? – YOU

Questions connexes