Witam
Mam do napisania program zwracający zawartość nagłówka strony internetowej (zawartość sekcji <head>) wykorzystując pakiet java.util.regex. Próbowałem to zrobić w mniej więcej taki sposób:
package pai;
import java.io.IOException;
import java.io.InputStream;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MainClass {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String strona = "";
URL url=null;
boolean wrongInput=true;
while (wrongInput){
System.out.println("Podaj adres strony");
strona = in.next();
try{
url = new URL(strona);
wrongInput=false;
}
catch(MalformedURLException ex){
System.out.println("Podany adres jest bledny");
in.skip(".*");
}
}
try{
InputStream is = url.openStream();
Scanner inFromIs = new Scanner(is);
Pattern pattern = Pattern.compile("<head.*</head>",Pattern.CASE_INSENSITIVE);
String match = inFromIs.useDelimiter("\\\\Z").next();
Matcher matcher = pattern.matcher(match);
boolean found=false;
System.out.println("Znalazlem:");
while (matcher.find()){
System.out.println(matcher.group());
found=true;
}
if (!found){
System.out.println("Nic nie znalazlem");
}
}
catch(IOException ex){
System.out.println("Nie udalo sie utworzyc polaczenia");
}
}
}
Problem jest jednak takiej natury, że metoda group() najprawdopodobniej ma jakiś delimiter, do którego znaki są odczytywane i objęcie nią całego nagłówka jest zazwyczj niemożliwe. Jest może jakiś sposób na obejście tego, ewentualnie jakaś inna metoda bez tego typu ograniczeń