(\S+) - вот эта штука у тебя только пробелы и выберет, а нам надо всё что с начала строки до пробела, за исключением самого пробела, что и делает ^(.*[^\s+])\s+ .

Эта же регулярка валидирует строку на корректность формата - если она не проходит, то вылезет эксепшен "bad request line". Этот метод только разбирает строку, а валидация по принимаемым методам и версиям протокола должна быть в другом месте.