/ / Przechwytuje w regexes C # - c #, regex-group

Przechwytuje w regexes C # - c #, regex-group

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 № 1

Spró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]);
});