String s = "Java 7, Java 6";
Pattern p = Pattern.compile("Java.+\\d");
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println(m.group());
}
What
is the result?
A.
Java 7
Java 7
B.
Java 6
Java 6
C.
Java 7, Java 6
Java 7, Java 6
D.
Java 7
java 6
Java 7
java 6
E.
Java
Java
Risposta C
1) si definisce una stringa s = "Java 7, Java 6".
2)si definisce un Pattern p. Un pattern è una rappresentazione
compilata di una espressione regolare.
Java. significa : ogni espressione che inizia con Java e a destra ha
un qualunque carattere ( . ); nel nostro caso il carattere è uno spazio.
\\d Significa una cifra cioè un carattere in [0-9]
+ Indica una o più occorrenze.
Quindi Java.+\\d indica : trova
tutte le sottostringhe che iniziano per Java, proseguono con un carattere
qualsiasi e terminano con una qualunque cifra :
L’unica modalità richiesta dall’esame è quella greedy. L’espressione regolare sopra
scritta può essere intesa in due modi :
Infatti .+ è greedy . Se
avessimo voluto un quantificatore diverso, ad esempio reluctant avremmo dovuto
usare: .?+ .
Quindi l’unica corrispondenza che viene trovata è l’intera
stringa.
3) Una volta creato il pattern, cioè il “comportamento” si può
creare il matcher, cioè la “corrispondenza” tra l’ingresso e le regole
dell’espressione regolare.
4)Il matcher a questo punto può essere scorso con il metodo find()che trova di volta in volta la corrispondenza
successiva. In pratica quindi si stampano tutte le corrispondenze trovate.
5)Essendo stata trovata una sola corrispondenza questa viene stampata e si ha il risultato : Java 7, Java 6
Riferimenti:


Nessun commento:
Posta un commento