Проблема в том, что вы пытаетесь сопоставить токены с началом строки с ^
.Токены никогда не будут содержать новых строк для начала (они будут просто подстроки, разделенные разделителем), поэтому ^
не имеет смысла.Если вы хотите прочитать строки с помощью сканера, я предлагаю вам сделать
Scanner input = new Scanner(file).useDelimiter("\n");
Затем просто отбросьте ^
, и оно будет работать:
while (!input.hasNext(Pattern.compile("\\+.*")))
System.out.println("No leading +: " + input.next());