我尝试使用reqular表达式从html字符串中删除特定链接。
我有一个像这样的html字符串:
<a href="http://linkA.com/fdfdfdf">use this</a> to make this <a href="http://linkB.com/fdsfds">happen</a>
最后我希望它看起来像这样:
<a href="http://linkA.com/fdfdfdf">use this</a> to make this happen
我尝试了很多模式。起初我删除了所有href:
</?a(|\s+[^>]+)>
然后我尝试了许多正则表达式:
<a\s+(?:[^>]*?\s+)?href="linkB.com([^"]*)
/<a[^>]*href="http\:\/\/linkB.com([^"]*)"[^>]*>.*<\/a>/
<a href="[^"]*?linkB*?">.*?</a>
<a\s.*?href=["']([^"']*?linkB[^"']*?)[^>]*>.*?<\/a>
(?=.*href=\"([^\"]*linkB[^"]*)")<a [^>]+>
<a[^>]*puustelli[^>]*>[^<]*<\/a>
他们都没有做我需要做的事情。魔术需要通过仅查找网址的域名部分来实现。我希望指向linkB的所有链接都消失,但保留锚文本。
答案 0 :(得分:1)
此正则表达式将找到包含“linkB.com”的href的锚标记,并保留捕获组1中锚标记之间的文本。
<a\s+href\s*=\s*"[^"]*?linkB\.com[^"]*">([^<]+)</a>
请注意,此正则表达式非常严格。它不允许锚标记中的额外属性,也不允许标记出现在锚标记之间。它可以变得更加灵活,但会很快变得丑陋。如果您需要比此正则表达式提供的更多灵活性,我认为最好使用HTML解析器,例如HTML Agility Pack。
答案 1 :(得分:0)
试试这个
(<\sa\shref=[^<]+<\sa)href="http:\/\/linkB\.com\/[^>]+(>happen<\/a>)
OR
(.*<\sa\s)href="http:\/\/linkB\.com\/[^>]+(>happen<\/a>)