在字符串中将<img/>替换为<img/>

时间:2015-09-14 19:02:24

标签: java regex

我希望将每个<img>标记替换为字符串中的<img></img>标记。该字符串实际上是一个html文档,其中img标记由我生成,并且总是如下所示:

<img src="some_source.jpg" style="some style attributes and values">

Src是用户输入,所以它可以是任何东西。 我做了一个正则表达式,不确定是否正确,因为它是我第一次使用它,但在测试时它正在工作。问题是我不知道如何保留src的内容。

/<img\ssrc=".+?"\sstyle=".+?">/g

但是我在替换字符串中的标签时遇到了困难。

我得到的就是:

    Pattern p = Pattern.compile("/<img\\ssrc=\".+?\"\\sstyle=\".+?\">/g");
    Matcher m = p.matcher(str);
    List<String> imgStrArr = new ArrayList<String>();
    while (m.find()) {
        imgStrArr.add(m.group(0));
    }
    Matcher m2 = p.matcher(str);

2 个答案:

答案 0 :(得分:4)

您可以使用以下正则表达式进行匹配:

(<img[^>]+>)

并替换为$1</img>

<强>代码:

str = str.replaceAll("(<img[^>]+>)", "$1</img>");

编辑:考虑到@MarcusMüller的建议,您可以执行以下操作:

正则表达式:(<img[^>]+)>

替换为$1/>

<强>代码:

str = str.replaceAll("(<img[^>]+)>", "$1/>");

答案 1 :(得分:1)

您不必使用Pattern和Matcher类,您可以使用这样的常规替换方法:

str = str.replaceAll("(<img.*?>)", "$1</img>");

<强> IdeOne working demo