我正在尝试转换以下字符串:
<img src="image.jpg" ... />
这一个
<img src="cid:image" ... />
&#34;图像&#34;需要维护字符串,但字符串本身可能不同。在html文档中有不同的img标签,每个标签都有不同的图像文件。
所以,例如,如果我有:
<img src="mylogo.jpg" ... />
它应该转换为:
<img src="cid:mylogo" ... />
图片可以是jpg
或gif
。
感谢您的帮助,
答案 0 :(得分:0)
<强> 注意:的强>
除了Regex
不是解析HTML
的正确工具之外,正如评论中所提到的那样,因为在Java中有许多用于解析HTML
的工具,也许你可以采用例如,看看 jsoup ,我会为您提供一个符合您使用Regex的解决方案。
<强>解决方案:强>
您可以使用以下Regex:
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
。< / em>的\"
字面匹配字符"
期望的输出:
要将此表达式替换为所需结果,只需在replaceAll()
方法上使用此正则表达式,如下所示:
html.replaceAll("src=\"([\\:\\w\\s\\/]+)\\.\\w{3}\"", "src=\"cid:$1\"");
我们使用$1
指向第一个捕获组。