2014-03-14 1 views
0

태그가 포함 된 HTML 문자열이 있습니다. 각 img 태그에서 src 속성을 찾아 수정해야합니다. 예 :Regex : 여러 일치 찾기 및 수정

원래 태그는 다음과 같습니다 나는의 file 쿼리 문자열의 가치를 몇 가지 코드에 매핑, 새 이름을 얻고, 새로운 하나를 전체 src 속성을 수정할

<img src="http://some.domain.com/images/uncat-images/?file=vx1qro62da5th39u.jpeg&dimension=50" style="color:#2345f1" /> 

.

주어진 예에서 file 이름은 vx1qro62da5th39u.jpeg입니다. 그래서지도에서 새로운 가치를 찾고 싶습니다. 예를 들어, newfilename.png이됩니다. 다음과 같아야합니다

/newroot/images/newfilename.png 

img에 의미 : 지금이 가지고있는 전체의 src 값을 대체 할

<img src="/newroot/images/newfilename.png" style="color:#2345f1" /> 

내가 나에게 명명 된 그룹의 src 값을 제공이 Regex 있습니다 :

var regex = new Regex("<img.+?src=[\\\"'](?<URL>.+?)[\\\"'].*?>", RegexOptions.Compiled | RegexOptions.IgnoreCase); 

솔직히 말해서, 나는 약 2 시간) 바로 여기 붙어있어 :

,
var regex = new Regex("<img.+?src=[\\\"'](?<URL>.+?)[\\\"'].*?>", RegexOptions.Compiled | RegexOptions.IgnoreCase); 
var html = "My html string with several img tags..."; 
var matches = regex.Matches(html); 
foreach (Match match in matches){ 
    // I'm right here):  
} 

계속하는 법을 알고 있습니까? 미리 감사드립니다.

답변

1

MatchEvaluator을 사용하는 Regex.Replace 방법을 사용해야합니다. 예 :

Regex rx = new Regex("(?<=<img[^>]*src=\")[^\"]+", RegexOptions.IgnoreCase); 
string html = "My html string with several img tags..."; 
string newHtml = rx.Replace(html, m => "/newroot/images/" + m.Value); 

가 나는 SRC 속성의 내용을 캡처 있도록 긍정적 인 lookbehind를 사용하여 정규식을 수정했습니다.

+0

** 감사합니다 ** 잘 작동합니다. –