Для этого есть всякие распределнные вычисления типа mapreduce на hadoop или аналогичных платформах.
Но 5млн строк это всё-таки не бигдата .
Делайте нормальный скрипт для проверки постепенной, а не 5 милионов сразу в функцию зах*уячить и ждать что всё будет прекрасно.
Можно еще очередь(amqp) поставить и воркеров запустить, и вкидывать туда задания. Но тоже это все аккуратно и постепенно.
UPD. в процессе написания понял, что можно это всё сделать с помощью функций str..., но всё же хотелось бы узнать, возможно ли всё реализовать на регулярках?
Чтоб сервер не скучал и напрягался на регулярки которые жрут ресурсы как слон?
Ни примера текста, ни какие теги и т.п.
Скорее всего самый лучший вариант как обычно DOM парсер, а не регулярки.