0

我有一些可以有标签的 html 字符串,如下所示:

<p> blablabla <img> an image</img> again blablabla</p>

我想删除图像标签,并在字符串数组中获取之前和之后的部分。

编辑: 调用后

String[] splitted = htmlStr.split("regex");

结果将是:

splitted[0] = "<p> blablabla ";
splitted[1] = "again blablabla</p>"

我想说一个正则表达式是必需的,请注意 img 标签可能因字符串而异:例如,它可以具有一个或多个属性。

4

4 回答 4

1

您应该使用HTML Parserfor 解析HTMLs,因为您的标签可能会有所不同,无法完全由Regex.

但是,对于这种情况,您只想删除<img>标签,无论它具有什么属性,您都可以使用以下正则表达式:-

String str = "<p> blablabla <img> an image</img> again <img href = sadf> " + 
             "asdf asdf </img>blablabla</p>";

str = str.replaceAll("<img\\s*[^>]*?>[^<]*?</img>", "");
System.out.println(str);

输出: -

<p> blablabla  again blablabla</p>

您想查看以下链接:-

您可以使用 HTML 解析器,例如:-

于 2012-10-29T12:25:20.140 回答
0

试试下面的代码:

String str = "<p> blablabla <img> an image</img> again blablabla</p>";
int start = str.indexOf("<img");
int end = str.indexOf("</img>");
String imgTagValue = str.substring(0,start) + str.substring(end, str.length());

但是,如果在一行<img>中使用了多个标签,则应该对其进行适当的解析。

参考这里

于 2012-10-29T12:25:42.703 回答
0

如果要删除所有 html-tags,可以使用以下代码:

string = string.replaceAll("\\<.*?\\>", "");
于 2012-10-29T12:26:40.920 回答
0

使用 StringTokenizer、String.split() 或 HTML 解析器来处理具有许多 IMG 标记的复杂 HTML。

于 2012-10-29T12:22:55.163 回答