Я бы сделал это так:
/[^ \\]*(?:\\ [^\\ ]*)*/
Это идиома Фридла "развернутая петля". Вероятно, в целевой строке будет очень мало экранированных пробелов по сравнению с другими символами, поэтому каждый раз, когда вы получаете шанс, вы поглощаете столько других символов, сколько можете. Это гораздо эффективнее, чем чередование по одному символу за раз.
Редактировать: (Томалак) Я поставил косые черты вокруг регулярного выражения, потому что подсветка синтаксиса, кажется, распознает их и рисует все регулярное выражение одним цветом. Без них он может подобрать другие символы, такие как кавычки, и неправильно (и запутанно) раскрасить части регулярного выражения в разные цвета.
(Брэд) В ОП упоминались только пробелы, поэтому я позволил им только цитировать их, но вы правы. Оригинальный пример развернутого цикла в книге был для строк в двойных кавычках, которые могут содержать любую из нескольких escape-последовательностей, одна из которых - экранированная кавычка. Вот регулярное выражение:
/"[^\\"]*(?:\\.[^\\"]*)*"/
(Томалак) Я не знаю, что вы имеете в виду, когда говорите, что оно не соответствует «имени файла в начале строки». Похоже, что совпадают оба имени файла в примере OP. Тем не менее, он также соответствует пустой строке, что не очень хорошо. Это можно исправить, но если эффективность не окажется проблемой, усилия не стоят. Решение Стефана работает отлично.