0
4

5 回答 5

0

使用这个正则表达式:

(<div.*?<a.*?</a>)(?:.*?</a>)*.*?(</div>)

它将返回 2 个组。第一组将包含从第一行的开头<div</a>结尾。第二组将包含结束</div>。只需将这两个组连接起来,您就拥有了所需的东西。

于 2013-01-01T11:18:31.993 回答
0

尝试 :

var str = "" ;// Your String goes Here.
var firstPos = str.indexOf("<a");
var lastPos = str.lastIndexOf("</a>");
var regex = new RegExp("\<a.*a\>");
var firstTag = str.match(regex);
var str1 = str.slice(0,firstPos);
var str2 = str.slice(lastPos);
str = str.replace(regex, "");
str = str1 + (firstTag.toString().split(",")[0]).toString() + str2;
于 2012-12-21T11:30:58.970 回答
0

如果你真的想这样做,如你所见,在 div 中,每个 a 元素用逗号分隔,所以你可以尝试:

string result = Regex.Replace(your_html, ",.+</a>", "", RegexOptions.Singleline)  

或者:

string result = Regex.Replace(html, "(!?,)<a .+a>(?=</div>)", "", RegexOptions.Singleline)
于 2013-01-01T10:59:55.217 回答
0

您不需要使用正则表达式。这是一种非常粗略的方法,但它应该可以工作。

string html = "... html goes here";
string cleanedUpHtml = html.Substring(0, html.IndexOf("</a>") + 4) + "</div>";
于 2012-12-21T10:55:26.537 回答
0
string html = ...
string rem = Regex.Match(html, "<a .+?</a>(.+?)</div>", RegexOptions.Singleline).Result("$1");
html = html.Replace(rem, String.Empty);
于 2012-12-21T11:02:43.347 回答