According to the javadoc for
Skips input that matches the specified pattern, ignoring delimiters.
public class Example
public static void main(String  args)
Scanner sc = new Scanner("Hello World! Here 55");
String piece = sc.next();
sc.skip("World"); // Line A throws NoSuchElementException, vs.
sc.skip("\\sWorld"); // Line B works!
sc.findInLine("World"); // Line C works!
You left out the next sentence of the method's description which reads (emphasis mine):
This method will skip input if an anchored match of the specified pattern succeeds.
Scanner is not so much "ignoring" the delimiter, but simply trying to match the specified regular expression without taking the delimiter into account. In other words, the space before
World is not treated as a delimiter by
skip(), but merely part of the input that it is trying to match against.