string=" <p class=\"topiccontent\"> ....,于是找了一家补胎店给看了看。<br><br><img src=\"/uploads/app/pic/s_20110625055343396094.JPG\" alt=\"\"><br>补胎店给看了后,说好解决<br><img src=\"/uploads/app/pic/s_20110625055343395211.JPG\" alt=\"\"> .....</p>"
现在想通过C#正则实现2个功能:1,将上面的图片标签通过正则替换成形如:<a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt="" width="300px"></a>。这样做的目的希望文章中点击小图是浮动弹出大图。
2,将所有图片变成1中所示。求解正则和替换详细内容,谢谢各位老师
现在想通过C#正则实现2个功能:1,将上面的图片标签通过正则替换成形如:<a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt="" width="300px"></a>。这样做的目的希望文章中点击小图是浮动弹出大图。
2,将所有图片变成1中所示。求解正则和替换详细内容,谢谢各位老师
string s = "<p class=\"topiccontent\"> ....,于是找了一家补胎店给看了看。<br><br><img src=\"/uploads/app/pic/s_20110625055343396094.JPG\" alt=\"\"><br>补胎店给看了后,说好解决<br><img src=\"/uploads/app/pic/s_20110625055343395211.JPG\" alt=\"\"> .....</p>";
string r = Regex.Replace(s, @"<img src=""([^>""]+?)"" alt="""">", @"<a href=""$1""><img src=""$1"" alt="" width=""300px""></a>");
Response.Write(Server.HtmlEncode(r));
<img src=""/uploads/app/pic/s_20110625055343396094.JPG"" alt=""""><br>补胎店给看了后,说好解决<br><img src=""/uploads/app/pic/s_20110625055343395211.JPG"" alt=""""> .....</p>";
string result = Regex.Replace(str, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?>", "<a href=\"$2\">$0</a>");
Response.Write(result);
/*
<p class="topiccontent"> ....,于是找了一家补胎店给看了看。<br><br>
<a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt=""></a><br>补胎店给看了后,说好解决<br><a href="/uploads/app/pic/s_20110625055343395211.JPG"><img src="/uploads/app/pic/s_20110625055343395211.JPG" alt=""></a> .....</p>
*/
string s = "<p class=\"topiccontent\"> ....,于是找了一家补胎店给看了看。<br><br><img src=\"/uploads/app/pic/s_20110625055343396094.JPG\" alt=\"\"><br>补胎店给看了后,说好解决<br><img src=\"/uploads/app/pic/s_20110625055343395211.JPG\" alt=\"\"> .....</p>";
string r = Regex.Replace(s, @"(?<=<p class=""topiccontent"">.+?)<img src=""([^>""]+?)"" alt="""">(?=.+?</p>)", @"<a href=""$1""><img src=""$1"" alt="" width=""300px""></a>");
Response.Write(Server.HtmlEncode(r));
string str = @"<p class=""topiccontent""> ....,于是找了一家补胎店给看了看。<br><br>
<img src=""/uploads/app/pic/s_20110625055343396094.JPG"" alt=""""><br>补胎店给看了后,说好解决<br><img src=""/uploads/app/pic/s_20110625055343395211.JPG"" alt=""""> .....</p>";
string result = Regex.Replace(str, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?>", "<a href=\"$2\"><img src=\"$2\" alt=\"\" width=\"300px\" /></a>");
Response.Write(result);
/*
<p class="topiccontent"> ....,于是找了一家补胎店给看了看。<br><br>
<a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt="" width="300px" /></a><br>补胎店给看了后,说好解决<br><a href="/uploads/app/pic/s_20110625055343395211.JPG"><img src="/uploads/app/pic/s_20110625055343395211.JPG" alt="" width="300px" /></a> .....</p>
*/
string r = Regex.Replace(s, @"(?<=<p class=""topiccontent"">.+?)<img src=""([^>""]+?)"" alt="""">(?=.+?</p>)", @"<a href=""$1""><img src=""$1"" alt="""" width=""300px""></a>");
Response.Write(Server.HtmlEncode(r));
输出:
<p class="topiccontent"> ....,于是找了一家补胎店给看了看。<br><br><a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt="" width="300px"></a><br>补胎店给看了后,说好解决<br><a href="/uploads/app/pic/s_20110625055343395211.JPG"><img src="/uploads/app/pic/s_20110625055343395211.JPG" alt="" width="300px"></a> .....</p>
哈哈~~
"<br><br><img src=\"/uploads/app/pic/s_20110625055343396094.JPG\" alt=\"\"><br>补胎店给看了后,说好解决<br><img src=\"/uploads/app/pic/s_20110625055343395211.JPG\" alt=\"\"> .....</p>";
Regex regex = new Regex(@"(?<=(<\w+\s+[^>]+>))");
MatchCollection mc=regex.Matches(str);
foreach (Match v in mc)
Console.WriteLine(v.Groups[1]);输出结果是这样的:
"<p class=\"topiccontent\">
<img src=\"/uploads/app/pic/s_20110625055343396094.JPG\" alt=\"\">
<img src=\"/uploads/app/pic/s_20110625055343395211.JPG\" alt=\"\">
<img src=""/uploads/app/pic/s_20110625055343396094.JPG"" alt=""aa""><br>补胎店给看了后,说好解决<br><img src=""/uploads/app/pic/s_20110625055343395211.JPG"" alt=""bb""> .....</p>";
string result = Regex.Replace(str, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?alt=(['""\s]?)([^'""\s]+)\3[^>]*?>", "<a href=\"$2\"><img src=\"$2\" alt=\"$4\" width=\"300px\" /></a>");
Response.Write(result);
/*
<p class="topiccontent"> ....,于是找了一家补胎店给看了看。<br><br>
<a href="/uploads/app/pic/s_20110625055343396094.JPG"><img src="/uploads/app/pic/s_20110625055343396094.JPG" alt="aa" width="300px" /></a><br>补胎店给看了后,说好解决<br><a href="/uploads/app/pic/s_20110625055343395211.JPG"><img src="/uploads/app/pic/s_20110625055343395211.JPG" alt="bb" width="300px" /></a> .....</p>
*/
string r = Regex.Replace(s, @"(?<=<p class=""topiccontent"">.+?)<img src=""([^>""]+?)"" alt=""([^""]*?)"">(?=.+?</p>)", @"<a href=""$1""><img src=""$1"" alt=""$2"" width=""300px""></a>");
Response.Write(Server.HtmlEncode(r));
// strContent = Regex.Replace(strContent, @"<img src=""([^>""]+?)"" alt=""([^""]*?)"">", @"<a href=""$1""><img alt=""$2"" src=""$1"" width=""550px""></a>", RegexOptions.IgnoreCase); 一, 无法匹配替换
// strContent = Regex.Replace(strContent, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?alt=(['""\s]?)([^'""\s]+)\3[^>]*?>", "<a href=\"$2\"><img src=\"$2\" alt=\"$4\" width=\"550px\" /></a>", RegexOptions.IgnoreCase); 二, 无法匹配替换
strContent = Regex.Replace(strContent, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?>", "<a href=\"$2\"><img src=\"$2\" alt=\"\" width=\"300px\" /></a>", RegexOptions.IgnoreCase); 三,可以
return strContent;
感谢。用4楼的即上面三的正则可以正确匹配替换。但用一和二都无法匹配,请问什么原因。
<img src=""/uploads/app/pic/s_20110625055343396094.JPG""><br>补胎店给看了后,说好解决<br><img src=""/uploads/app/pic/s_20110625055343395211.JPG"" alt=""bb""> .....</p>";
string result = Regex.Replace(str, @"<img[^>]*?src=(['""\s]?)([^'""\s]+)\1[^>]*?(?:alt=(['""\s]?)([^'""\s]+)\3[^>]*?)?>", "<a href=\"$2\"><img src=\"$2\" alt=\"$4\" width=\"300px\" /></a>");
huangwenquan123 最后的办法解决了问题,分理应多些。