Ten kod ma na celu przekonwertowanie wartości img src na ścieżkę lokalną.
var matches = Regex.Replace(html, "(<[ ]*img[^s]+src=[""])([^""]*)([""][^/]*/>)",
(match)=> {
return string.Format("{0}{1}{2}",
match.Captures[0],
HostingEnvironment.MapPath("~/" + match.Captures[1]),
match.Captures[2]);
});
Poprawnie pasuje do całego tagu graficznego, ale jest tylko jedno przechwytywanie. Myślałem, że nawiasy ograniczają przechwytywanie, ale wydaje się, że nie działają w ten sposób.
Jak powinienem to napisać, żeby zdobyć trzy przechwyty, a środkowy to ścieżka?
Odpowiedzi:
1 dla odpowiedzi № 1Spróbuj użyć Właściwość grup zamiast przechwytywania, jak na przykład:
var matches = Regex.Replace("<img src="dsa"/>", "(<[ ]*img[^s]+src=[""])([^""]*)([""][^/]*/>)",
(match)=> {
return string.Format("{0}{1}{2}",
match.Groups[1],
HostingEnvironment.MapPath("~/" + match.Groups[2]),
match.Groups[3]);
});