我想从以下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>
答案 0 :(得分:0)
您不需要使用Regex。这是一种非常粗糙的方式,但它应该有效。
string html = "... html goes here";
string cleanedUpHtml = html.Substring(0, html.IndexOf("</a>") + 4) + "</div>";
答案 1 :(得分:0)
string html = ...
string rem = Regex.Match(html, "<a .+?</a>(.+?)</div>", RegexOptions.Singleline).Result("$1");
html = html.Replace(rem, String.Empty);
答案 2 :(得分: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;
答案 3 :(得分:0)
如果你真的想要这个,正如你所看到的那样,在div中,每个元素都用逗号分隔,所以你可以尝试:
string result = Regex.Replace(your_html, ",.+</a>", "", RegexOptions.Singleline)
或者:
string result = Regex.Replace(html, "(!?,)<a .+a>(?=</div>)", "", RegexOptions.Singleline)
答案 4 :(得分:0)
使用此正则表达式:
(<div.*?<a.*?</a>)(?:.*?</a>)*.*?(</div>)
它将返回2组。第一组将从第一行末尾的<div
开始到</a>
。第二组将包含结束</div>
。只需连接这两个组就可以得到你需要的东西。