Why does the following code return false?
Scanner sc = new Scanner(\"-v \");
sc.useDelimiter(\"-[a-zA-Z]\\\\s+\");
System.out.println(sc.hasNext());
A scanner is used to break up a string into tokens. Delimiters are the separators between tokens. The delimiters are what aren't matched by the scanner; they're discarded. You're telling the scanner that -[a-zA-Z]\\s+
is a delimiter and since -v
matches that regex it skips it.
If you're looking for a string that matches the regex, use String.matches().
If your goal really is to split a string into tokens then you might also consider String.split(), which is sometimes more convenient to use.