Tous,Regex .NET: remplacement des liens et img src
Je dois écrire une expression régulière pour effectuer les opérations suivantes remplacer
(A)
src ="/folder/image.jpg"
ou
src="http://www.mydomain.com/folder/image.jpg"
avec
src="/cache/getCacheItem.aspx?source_url=http://www.mydomain.com/folder/image.jpg"
(B)
href="/folder/file.zip"
ou
href="http://www.mydomain.com/folder/file.zip"
avec
href="/cache/getCaccheItem.aspx?source_url=http://www.mydomain.com/folder/file.zip
Je sais que je peux utiliser
(src|href).*?=['|\"](?<url>.*?)['|\"]
avec une valeur de remplacement
$1="/legacy_integration/cache/getCacheItem.aspx?source_url=$2"
pour attraper src = ... et href = ... attributs. Cependant, j'ai besoin de filtrer sur la base de l'extension de fichier - seulement correspondre à des extensions d'image valides comme jpg, png, gif, et seulement correspondre à des extensions href comme zip et pdf.
Des suggestions? Le problème peut être résumé comme suit: modifier l'expression ci-dessus pour correspondre uniquement à certaines extensions de fichier et permettre au domaine http://www.mydomain.com/ d'être inséré uniquement si l'URL d'origine était un parent, garantissant ainsi que le texte de sortie contienne le domaine une seule fois. Dois-je effectuer cette opération en utilisant deux expressions régulières différentes, une pour le texte source incluant le domaine et une autre sans? Ou puis-je utiliser en quelque sorte une instruction de correspondance conditionnelle qui, en combinaison avec une expression de remplacement, insérera le domaine ou non selon que le texte correspondant contient le domaine? Je sais que je peux le faire en utilisant un évaluateur de correspondance personnalisé, mais il semble qu'il puisse être plus rapide/plus efficace de le faire dans la regex elle-même.
Suggestions/commentaires?
duplication possible de [balises ouvertes de correspondance RegEx à l'exception des balises autonomes XHTML] (http://stackoverflow.com/questions/1732348/regex-match-open-tags-except-xhtml-self-contained-tags) – AeroX