Java HTML正则表达式问题

欧内斯特·波德里奇

我正在尝试转换以下字符串:

<img src="image.jpg" ... />

与这个

<img src="cid:image" ... />

需要保留“图像”字符串,但字符串本身可以不同。在html文档中,有不同的img标记,每个img标记具有不同的图像文件。

因此,例如,如果我有:

<img src="mylogo.jpg" ... />

它应该转换为:

<img src="cid:mylogo" ... />

图像可能是jpggif

谢谢你的帮助,

cнŝdk

笔记:

如注释中所述,除了Regex不是正确的分析工具外HTML,因为在Java中有许多分析工具,例如,HTML您可以看一下jsoup,我将为您提供适合您使用需求的解决方案正则表达式。

解决方案:

您可以使用以下正则表达式:

src=\"([\\:\\w\\s\\/]+)\\.\\w{3}\"

这是您需要的代码:

        String html = "<img src=\"folder1/mylogo.jpg\" ... />";
        Pattern pattern = Pattern.compile("src=\"([\\:\\w\\s\\/]+)\\.\\w{3}\"");
        Matcher matcher = pattern.matcher(html);
        while (matcher.find()) {
            System.out.println("group 1: " + matcher.group(1));
            //This line will give you the wanted output.
            System.out.println("src=\"cid:"+matcher.group(1)+"\"");
            System.out.println("Final Result: "+html.replaceAll("src=\"([\\:\\w\\s\\/]+)\\.\\w{3}\"", "src=\"cid:$1\""));
        }

这是一个有效的演示

解释:

  • src=src=从字面上匹配字符
  • \""从字面上匹配字符
  • ([\\w\\/]+) 是一个匹配所有所需文本的捕获组。
  • \..从字面上匹配字符
  • \w{3,4}匹配[a-zA-Z0-9_]3到4次之间的任何单词字符作为扩展名,如果您不愿意使用任何其他图像扩展程序,则可以改用jpg|gif
  • \""从字面上匹配字符

编辑:

所需的输出:

要将表达式替换为所需结果,只需在replaceAll()HTML方法中使用此正则表达式,如下所示:

html.replaceAll("src=\"([\\:\\w\\s\\/]+)\\.\\w{3}\"", "src=\"cid:$1\"");

我们$1用来指向第一个捕获组。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章