使用Java正则表达式自定义HTML img标记

use*_*129 1 html java regex

我是正则表达式的新手,但我相信这是我解决方案的方法.我正在尝试使用任意HTML代码段并自定义图像标记.例如,

如果我有这个HTML代码: <><><><><img src="blah.jpg"><><><><><><><><img src="blah2.jpg"><><><>

我想把它变成: <><><><><img src="images/blah.jpg"><><><><><><><><img src="images/blah2.jpg"><><><>

我现在的守则是这样的:

Pattern p = Pattern.compile("<img.*src=\".*\\..*\"");
Matcher m = p.matcher(htmlString);
boolean b = m.find();

String imgPath = "src=\"images/";

while(b)
{
    //Get file name.
    String name="test.jpg\"";

    //Assign new path.
    m.group().replaceAll("src=\".*\"",imgPath+name);
}
Run Code Online (Sandbox Code Playgroud)

jos*_*736 8

正则表达式不是解析HTML的正确方法. 不要这样做.这是不可能做到正确的.

使用适当的解析器.

Document doc = Jsoup.parse(someHtml);
Elements imgs = doc.select("img");
for (Element img : imgs) {
    img.attr("src", "images/" + img.attr("src")); // or whatever
}

doc.outerHtml(); // returns the modified HTML
Run Code Online (Sandbox Code Playgroud)