我想用一個表示Html文件的字符串替換所有相對鏈接和絕對鏈接。我寫了下面的方法,這不起作用。任何鏈接後都跟着一個像http://www.google.dehttp://www.google.de/resource這樣的重複基地址?Java。將相對鏈接替換爲絕對正則表達式
public static String replacePattern(URL targetUrl,String urlAsString,String patternString) throws IOException{
System.out.println(targetUrl.toString());
Pattern pattern = Pattern.compile(patternString);
Matcher matcher = pattern.matcher(urlAsString);
Set<String> replacedStrings = new TreeSet<String>();
//return matcher.replaceAll(targetUrl.toString()+"$0");
while (matcher.find()) {
String relativeLink = matcher.group(1);
//System.out.println("Find Link " + relativeLink);
if(!replacedStrings.contains(relativeLink)){
//System.out.println("Relative Link " + relativeLink);
String newLink = targetUrl.toString() + relativeLink;
//System.out.println("New Link " + newLink);
urlAsString = urlAsString.replace(relativeLink,newLink);
replacedStrings.add(relativeLink);
}
}
return urlAsString;
}
UrlAsString是包含wholecontent String作爲String.My模式是
href=['\"](/[^'\"]+)['\"]
和
src=['\"](/[^'\"]+)['\"]
如果你能告訴我們具體*什麼*不起作用,我們可能會提供幫助。 –
如果可以分享一些相對URL和預期的絕對URL,將會很有幫助。 –
[使用XML解析器](http://stackoverflow.com/a/1732454/647772) – 2012-11-06 15:07:20