我希望将每个<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);
答案 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 强>