我正在尝试转换以下字符串:
<img src="image.jpg" ... />
与这个
<img src="cid:image" ... />
需要保留“图像”字符串,但字符串本身可以不同。在html文档中,有不同的img标记,每个img标记具有不同的图像文件。
因此,例如,如果我有:
<img src="mylogo.jpg" ... />
它应该转换为:
<img src="cid:mylogo" ... />
图像可能是jpg
或gif
。
谢谢你的帮助,
笔记:
如注释中所述,除了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] 删除。
我来说两句