Вы можете удалить все строки, которых нет в комментариях, выполнив поиск по регулярному выражению:
'[^'\r\n]+'|(//.*|/\*(?s:.*?)\*/)
и заменить на:
$1
По сути, это ищет регулярное выражение string|(comment)
, которое соответствует строке или комментарию, захватывая комментарий. Замена либо ничего, если строка соответствует, или комментарий, если комментарий был найден.
Хотя регулярные выражения не являются заменой для реального парсера, вы можете быстро создать элементарный парсер, создав гигантское регулярное выражение, которое чередует все интересующие вас токены (в данном случае комментарии и строки). Если вы пишете немного кода для обработки комментариев, но не в строках, выполните итерацию по всем совпадениям приведенного выше регулярного выражения и подсчитайте символы в первой группе захвата, если она участвовала в совпадении.