如何从文本中删除所有锚标记。如果我有这样的字符串:
< a href="a.aspx">aaaaa</a>
<b href="#">bbbbb</b>
tttttttt</a>
<a href = "#">ccccc< /a >
<a href="something.html">ddddd</a>
我如何删除链接,以便最终输出:
aaaaa
<b href="#">bbbbb</b>
tttttttt</a>
ccccc
ddddd
我需要在动作3中完成。
由于
答案 0 :(得分:0)
根据我的评论,这是一个基于请求的扩展答案。
首先,"regular" expressions should not be used to parse HTML因为HTML不是“常规”语言。这可以在您的示例中看到,其中多个奇怪可以在锚标记中使用,并且它们仍将被浏览器解析为链接。
但是<\s*a\b.*?>(.*?)<\s*/a\s*>
是一个在技术上符合您要求的表达式,因此如果您的用例是“受控制的”,那么就去做吧。这是一个扩展的解释:
<\s* (?# match < followed by 0+ whitespace)
a\b (?# match a followed by a word boundary)
.*?> (?# lazily match 0+ characters followed by >)
(.*?) (?# lazily capture 0+ characters into group #1)
<\s* (?# match < followed by 0+ whitespace)
/a (?# match /a literally)
\s*> (?# match 0+ whitespace characters followed by >)
备注:强>
(...)
在您的替换字符串中创建一个capture group referenced \1
或$1
。<a href="foo>bar">fail</a>
这样的链接上失败,这在技术上是一个无效的URL,但大多数阅读HTML的程序都会处理这个问题。String.replace(RegExp, String);