[Matcher] Problem z metodą group()

0

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ń

0

\z zamiast \Z, bo pierwsze czyta cały strumień i olewa wszystkie znaki końca linii.

0

Szczerze powiedziawszy niczego to nie zmieniło

0

OK. Mam. Flaga

Pattern.DOTALL

załatwiła sprawę

1 użytkowników online, w tym zalogowanych: 0, gości: 1