Я бы на вашем месте изменил регулярки с учетом несокльих строк, тогда не нужно будет вставлять в них \r\n\s и подобные. А во вторых регурярками вы не добьетесь правильной работы:
\\ comment
$a = '\\ not comment'; - такое Вы учитываете?
В свое время делал одну штуковину, которая подсвечивала код, там мне тоже нужно было парсить каменты и текст, я пытался все сделать через регулярки, но в итоге забил и переписал все перебором:
(многострочные каменты нужно искать так (я так искал текстовые строки, но к каментам тожеподходит):
1. проходим по тексту посимвольно (либо ищем открывающийся комент в тексте)
2. проверяем валидный ли он, не в тексте, не в другом каменте, не экранирован, итд
3. ищем ближайлий закрывающий камент, тоже все проверяем
4. удаляем текст от начальной позиции до конечной
Однострочные проще, в принципе то же но в одной строке, просто быстрей получается.
Регулярки тут бессильны, слишком много вариантов когда оно будет глючить (обычно строки)
5. идем на пункт 1 пока находятся парные каменты