java HTML正则表达式问题

标签 java html regex

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

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

这个

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

需要维护“图像”字符串,但字符串本身可能不同。在 html 文档中有不同的 img 标签,每个标签都有不同的图像文件。

例如,如果我有:

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

它应该转换为:

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

图像可以是 jpggif

感谢您的帮助,

最佳答案

注意:

除了 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\""));
        }

这是 a Working DEMO .

解释:

  • 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 指向第一个捕获组。

关于java HTML正则表达式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32310226/

相关文章:

java - 如何防止 session 属性在服务器上持久化?

javascript - jQuery:preventDefault() 不适用于 anchor 链接标记(尝试了很多方法!)

android - 在 WhatsApp 中显示链接的缩略图 || OG :image meta-tag doesn't work

python - 使用 python 3 正则表达式匹配双引号中的字符串

javascript - 正则表达式:如何拆分和替换包含数字的字符串?

java - 如何在.form创建的子面板上绘图?

java - Android SQL 数据库打开和关闭 - 竞争条件

java - 检查 EmptyOrNull 以获取未知数量的集合和 map

android - 在计算机上调整文本大小但在手机 HTML 上不调整

regex - 用于匹配 awk 命令中的模式的正则表达式