Why does the following code return false?
Scanner sc = new Scanner("-v ");
sc.useDelimiter("-[a-zA-Z]\\s+");
System.out.println(sc.hasNext());
The weird thing is -[a-zA-Z]//s+ will return true.
I also can't understand why this returns true:
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-vmatches 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.