我想在"http://localhost:59455/"
之前的下面的C#代码中替换每个"Images/TestFiles/(file name)"
。
string tags = @"<p><img class='img - fluid' src='http://localhost:59455/Images/TestFiles/1.JPG'></p><p><br></p><p><img class='img-fluid' src='http://localhost:59455/Images/TestFiles/2.JPG'></p>";
string final = Regex.Replace(tags, "http.*/Images", "~/Images");
但是它总是给我错误的结果,如下所示:
<p><img class='img - fluid' src='~/Images/TestFiles/2.JPG'></p>
虽然我希望得到如下结果:
<p><img class='img - fluid' src='~/Images/TestFiles/1.JPG'></p><p><br></p><p><img class='img-fluid' src='~/Images/TestFiles/2.JPG'></p>
您可以看到,它只替换了一个。
请帮助。
答案 0 :(得分:1)
*
是贪婪,并且匹配从前一个http
到最后一个/Images
的所有内容。添加?
以使其懒惰:
http.*?/Images
More information on greedy and lazy quantifiers on MSDN
但是请注意,您的正则表达式还将匹配其中包含/Images
的其他路径,例如:
http://localhost:59455/Whatever/Images
http://localhost:59455/ImagesButDifferent
因此,您可能希望使其更具限制性。