Это зависит от файла и регулярного выражения. Лучшее, что вы можете сделать, это прочитать файл построчно, но если это не сработает в вашей ситуации, вы можете застрять с вытягиванием всего файла в память.
Скажем, например, что это ваш файл:
Lorem ipsum dolor sit amet, consectetur
adipiscing elit. Ut fringilla pede blandit
eros sagittis viverra. Curabitur facilisis
urna ABC elementum lacus molestie aliquet.
Vestibulum lobortis semper risus. Etiam
sollicitudin. Vivamus posuere mauris eu
nulla. Nunc nisi. Curabitur fringilla fringilla
elit. Nullam feugiat, metus et suscipit
fermentum, mauris ipsum blandit purus,
non vehicula purus felis sit amet tortor.
Vestibulum odio. Mauris dapibus ultricies
metus. Cras XYZ eu lectus. Cras elit turpis,
ultrices nec, commodo eu, sodales non, erat.
Quisque accumsan, nunc nec porttitor vulputate,
erat dolor suscipit quam, a tristique justo
turpis at erat.
И это было ваше регулярное выражение:
consectetur(?=\sadipiscing)
Теперь это регулярное выражение использует положительный прогноз и будет соответствовать только строке "consectetur", если за ним сразу следует какой-либо символ пробела, а затем строка "adipiscing".
Так что в этом примере вам нужно будет прочитать весь файл в память, потому что ваше регулярное выражение зависит от всего файла, который анализируется как одна строка. Это один из многих примеров, когда для работы определенного регулярного выражения вам потребуется иметь всю строку в памяти.
Полагаю, неудачный ответ заключается в том, что все зависит от вашей ситуации.