Paolo Boldi

Appello Settembre 2008: URL

Lo scopo del progetto è riconoscere gli URL (Uniform Resource Locator) presenti in un file di testo (più precisamente, una forma ristretta di URL).

Classifichiamo i caratteri in due classi:

Un file di testo si può considerare un'alternanza di sequenze di caratteri non separatori e di sequenze di caratteri separatori. Le sequenze massimali di caratteri non separatori sono chiamate parole. Si noti che, per come abbiamo definito i separatori, pippo. è una parola (punto incluso!).

Ad esempio, nel seguente testo:

	
		.ecco un esempio     di testo 
		     composto da parole,    spazi.
		E da tante altre cose come http://url.com/
		elettronica ecc.
		

Le parole sono ".ecco", "un", "esempio", "di", "testo", "composto", "da", "parole", "spazi.", "E", "da", "tante", "altre", "cose", "come", "http://url.com/", "elettronica", "ecc.".

Fra le parole, particolare importanza hanno per noi gli URL. Una parola è un URL se e solo se soddisfa le seguenti proprietà:

Alcuni esempi di parole che non sono URL:

Viceversa, ad esempio, http://uffa.it/mamma.html, https://x.y.z/ e http://a/b/c sono URL.

Dovete scrivere un programma che, dato un file di testo, individui al suo interno tutti e soli gli URL, e li emetta in output nell'ordine in cui li trova.

File di input

Il file input.txt contiene un testo. Non vi sono vincoli sulla lunghezza del testo, né sulla lunghezza delle righe di cui è composto. Le parole di cui il testo è composto, viceversa, sono tutte di lunghezza minore o uguale a 100 caratteri.

File di output

Il vostro programma deve scrivere un file di nome output.txt. Il file conterrà tante righe quanti sono gli URL contenuti nel file di input. Ogni riga contiene un singolo URL, terminato da un a-capo, e nessun altro carattere.

Gli URL che compaiono nel file devono essere nello stesso ordine in cui compaiono nel testo (dall'alto in basso, da sinistra a destra).

Esempio di input/output

File input.txt

Questo, per esempio, è un http://url.valido/, mentre https://questo.non.lo./+, sia
perché la seconda parte termina con un punto, sia perché contiene una "e" accentata. Per
contro,http://vigna.dsi.unimi.it/music.php così come http://-.-/_._ vanno bene.

File output.txt

http://url.valido/
http://vigna.dsi.unimi.it/music.php
http://-.-/_._