我有一个htmlBody
字段,它有一个网页的html分配给它。我想检查所有出现的相对链接结束在.html
,并为他们中的每一个删除他们的扩展名。我不想要htmlBody.replaceAll(".html", "")
,因为它会删除所有链接,并打破一些外部链接,所以我的方法是找到所有匹配regex的出现,并且对于每次出现,使用replaceAll()
删除他们的扩展并附加到sb
。我试图按照官方文档中的示例,但显然它没有更改任何链接,可能是什么问题?
StringBuilder sb = new StringBuilder();
Pattern p = Pattern.compile("^\\/(.+\\\\)*(.+).(html)$");
Matcher m = p.matcher(htmlBody);
while (m.find()) {
String updatedLink = m.group().replaceAll(".html", "");
m.appendReplacement(sb, updatedLink);
}
m.appendTail(sb);
1条答案
按热度按时间aamkag611#
你正则表达式是错误的,^匹配字符串的开头,$匹配字符串的结尾。2所以你的代码中的匹配器永远不会匹配。
右正则表达式类似于
Pattern p = Pattern.compile("['\"]\\/(.+\\\\)*(.+).(html)");
,但它不能匹配<a href=/a.html>