繁体   English   中英

正则表达式用于删除<a>HTML中的</a>多个<a>标签</a>

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM