如何删除除img之外的所有html标签?

Fre*_*ind 4 regex

我得到了一些html文本,其中包含各种html标签,例如<table>, <a>, <img>,等等.

现在我想用正则表达式来删除所有的HTML标签,除了<img ...></img>(和大写<IMG></IMG>).

这该怎么做?


更新:

我的任务很简单,它只是在首页打印html的文本内容(包括图像)作为摘要,所以我觉得正则表达式很好而且很简单.


再次更新

也许一个样本会让我的问题更好理解:)

有一些HTML文字:

<html>
  <head></head>
  <body>
     Hello, everyone. Here is my photo: <img src="xxx.jpg" />. 
     And, <a href="xxx">know more</a> about me!
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我想保留,并删除其他标签.以下是我想要的:

Hello, everyone. Here is my photo: <img src="xxx.jpg" />. And, know more about me!
Run Code Online (Sandbox Code Playgroud)

现在我的代码如下:

html.replaceAll("<.*?>", "")
Run Code Online (Sandbox Code Playgroud)

但它会删除所有的内容<>,但我想保持<img xxx></img>,并删除之间的其他内容< and >

谢谢大家!

Fre*_*ind 10

我尝试了很多,这个正则表达式似乎对我有用:

(?i)<(?!img|/img).*?>
Run Code Online (Sandbox Code Playgroud)

我的代码是:

html.replaceAll('(?i)<(?!img|/img).*?>', '');
Run Code Online (Sandbox Code Playgroud)

  • 尼斯.+1.你能告诉我为什么我没有看到replaceAll方法吗?什么类型的'html'? (2认同)

Ode*_*ded 5

不要使用 RegEx 来解析 HTML。有关原因的引人注目的演示,请参见此处

为您的语言/平台使用 HTML 解析器。

  • 是一个java(HTML解析器)
  • 对于 .NET,建议使用HTML Agility Pack
  • 对于 ruby​​,有nokogiry,虽然我不是 ruby​​ 开发者,所以不知道它有多好

  • PP:欢迎详细说明为什么您认为答案不合适。就目前而言,您将答案描述为“盲目和不思考”并没有为讨论增加任何内容。 (3认同)