[英]Regex for removing more than one <a> tag in Html
我想仅从以下html中首先获取该html中的标记,该标记仅在此div class="itemcategories"
下,并且删除仅使用正则表达式的标记之后的所有标记。 我别无选择,只需要使用正则表达式即可。
<div class="itemcategories">
Categories:
<a id="1234" class="category" rel="abc" href="#">ABC</a>,
<a id="1234" class="category" rel="abc" href="#">DEF</a>,
<a id="1234" class="category" rel="abc" href="#">XYZ</a>
</div>
结果应如下所示
<div class="itemcategories">
Categories:
<a id="1234" class="category" rel="abc" href="#">ABC</a>
</div>
您不需要使用正则表达式。 这是一种非常粗糙的方法,但是应该可以。
string html = "... html goes here";
string cleanedUpHtml = html.Substring(0, html.IndexOf("</a>") + 4) + "</div>";
string html = ...
string rem = Regex.Match(html, "<a .+?</a>(.+?)</div>", RegexOptions.Singleline).Result("$1");
html = html.Replace(rem, String.Empty);
尝试:
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;
如您所见,如果您确实想要这样做,那么在div中,每个元素都以逗号分隔,因此您可以尝试:
string result = Regex.Replace(your_html, ",.+</a>", "", RegexOptions.Singleline)
要么:
string result = Regex.Replace(html, "(!?,)<a .+a>(?=</div>)", "", RegexOptions.Singleline)
使用此正则表达式:
(<div.*?<a.*?</a>)(?:.*?</a>)*.*?(</div>)
它将返回您2组。 第一组将从第一行的结尾处<div
到</a>
开始。 第二组将包含结束符</div>
。 只需将两个组连接起来,便可以满足需要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.