一般来说,使用正则表达式解析 HTML/XML 是个坏主意。但是对于一些零星的使用(只运行一次),如果你确定你的 HTML 的结构并且不需要太多的健壮性,像这样的东西(基于this)可以做到这一点:
String original = "..content... <a href='document/link/B1'>foo</a> ...content... <a href='document/link/B2'>bar</a> ...";
StringBuffer sb = new StringBuffer();
// tweak the following
Pattern pattern = Pattern.compile("(<a href='document/link/)([^']*)('>)");
Matcher matcher = pattern.matcher(original);
while(matcher.find()) {
String oldlinkPart = matcher.group(2);
String newlinkPart = buildNewLinkPart(oldLinkPart); // here you do your look-up
matcher.appendReplacement(sb, matcher.group(1) + newlinkPart + matcher.group(3));
}
matcher.appendTail(sb);
String modified = sb.toString();
您可以将正则表达式模式调整为更通用(更多空格、制表符、A 标记内的其他属性、区分大小写、双引号),但是当您开始假装完全通用时,您的代码可以正常工作形成 HTML,然后你就搞砸了:尝试使用 XML/DOM 解析器。