Se vuoi utilizzare le espressioni regolari c'è una semplice ed immediata guida su questo stesso sito. Comunque ho assunto che
la stringa di esempio che hai scritto non può assumere forme differenti ed ho provato a scrivere un espressione regolare per
definirla:
codice:
String regex = "[0-9]{2}+:+[0-9]{2}+:+[0-9]{2}+,+[0-9]{3}+ +[-]{2}+>+ +[0-9]{2}+:+[0-9]{2}+:+[0-9]{2}+,+[0-9]{3}";
Sicuramente si può scrivere meglio, abbreviare, abbellire, è il mio primo tentativo. Ho fatto un test e funziona.
Cosa significa quella bruttissima stringa apparentemente incomprensibile?
[0-9]{2} dove {2} indica la molteplicità, significa che puoi scrivere 2 cifre tra quelle indicate tra parentesi quadre (range dei numeri tra 0 e 9),in questo caso un numero tra 0 e 9
Il + indica la concatenazione, e siccome dopo le due cifre ci sono i due punti, scrivo [0-9]{2}+:, che letteralmente significa
"dopo le due cifre mettici i due punti". Dopo i due punti devi concatenare altre 2 cifre, quindi avrai
[0-9]{2}+:+[0-9]{2}.
Poi ci devi concatenare un altro ":", due numeri, una "," e TRE numeri --> [0-9]{2}+:+[0-9]{2}+:+[0-9]+,+[0-9]{3}. Nota il {3} invece del {2}.
Poi devi concatenare uno spazio, il simbolo "-" per due volte, il simbolo ">" ed uno spazio:
[0-9]{2}+:+[0-9]{2}+:+[0-9]+,+[0-9]{3}+ +[-]{2}+>+ +
Quel che viene dopo è speculare alla prima parte.
Una volta che hai creato la tua espressione regolare la puoi utilizzare per convalidare le stringhe che ti interessano.
Direttamente da questo sito, si può fare in due modi:
1)
codice:
private static boolean check(String regex, String input) {
if(Pattern.matches(regex, input)) {
return true;
} else {
return false;
}
}
2)
codice:
public static boolean check(String regex, String input){
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(input);
if (matcher.matches())
return true;
else
return false;
}
Dove regex è l'espressione regolare e l'input è la stringa che vuoi verificare.
Test completo:
codice:
public class Regex {
public static void main(String[] args) {
String input = "01:38:59,935 --> 01:39:01,604";
String regex = "[0-9]{2}+:+[0-9]{2}+:+[0-9]{2}+,+[0-9]{3}+ +[-]{2}+>+ +[0-9]{2}+:+[0-9]{2}+:+[0-9]{2}+,+[0-9]{3}";
boolean test = check(regex, input);
System.out.println(test);
}
private static boolean check(String regex, String input) {
if(Pattern.matches(regex, input)) {
return true;
} else {
return false;
}
}
}