【问题标题】:Java Reg expression for replacing img tag with ending tag [closed]用结束标签替换img标签的Java正则表达式[关闭]
【发布时间】:2015-05-24 23:08:13
【问题描述】:

我希望 reg 表达式用关闭标记替换 html 标记,例如:

<img src="path"> with <img src="path" /> or <img src="path" ></img>

请我需要这个,因为我需要这个正确的 html 用于 Itext pdf 生成器 api 它需要正确的结束标签.. 请给我解决方案

【问题讨论】:

  • 你想要两个中的哪一个?你试过什么?为什么这不起作用?
  • 我想输出为 img 的结束标签
  • 图片的结束标签总是一样的,为什么要根据开始标签来生成呢?
  • 没有,当我打印内部 html 时,它会生成像 但我需要将其替换为

标签: java html regex


【解决方案1】:

查找:

(<img[^>]*[^/]>)(?!\s*</img>)

替换:

$1</img>

这可确保您不会搞砸已经关闭的标签 例如您不想将&lt;img src="path"&gt;&lt;/img&gt; 替换为&lt;img src="path"&gt;&lt;/img&gt;&lt;/img&gt;

在 Java 中,我相信代码可能是:

str.replaceAll("(<img[^>]*[^/]>)(?!\\s*</img>)", "$1</img>");

【讨论】:

  • 注意已经关闭的标签很好。
【解决方案2】:

我不确定这是否是您正在寻找的内容,但也许可以尝试使用 HTML 解析器而不是正则表达式? Jsoup 似乎返回的内容与您正在寻找的内容相似。

Document doc = Jsoup.parse("<img src=\"path\"><div>something");
System.out.println(doc);

输出:

<html>
 <head></head>
 <body>
  <img src="path" />
  <div>
   something
  </div>
 </body>
</html>

【讨论】:

  • 但是我的路径每次都会改变所以怎么处理??? @pshemo
  • @JunaidAkhtar 你说的每次是什么意思?请更新您的问题并提供更多信息,因为我不确定这里有什么问题。
【解决方案3】:

如果你真的只是想将所有&lt;img &gt;标签更改为&lt;img /&gt;标签,你可以使用下面的sed命令,但正如其他人指出的那样,这不是一个好主意,很容易出错。

sed "s/\(<\s*img.*\)>/\1\/>/" Your_File.html

【讨论】:

  • 我想要它作为 java 字符串
  • 你说“想要它作为java字符串”是什么意思
  • 我的意思是 img 标签在 java 字符串变量中,现在我想在那个 java 字符串中替换
猜你喜欢
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-09
  • 1970-01-01
  • 2012-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多