Зависит от того, насколько сложным будет ваш CSS. Если это просто вопрос элементов ("p {}", "a {}"), идентификаторов / классов (#test {}), то, вероятно, проще всего использовать регулярные выражения. Вам понадобится один, чтобы найти все определения стилей и затем проанализировать их, а затем использовать больше регулярных выражений для поиска совпадений тегов.
Например, если вы обнаружили, что у вас есть стиль для тегов A, вы можете использовать регулярное выражение, например:
<a\b[^>]*>(.*?)</a>
Чтобы получить их, вам нужно будет заменить, чтобы добавить стиль. Конечно, вы хотите, чтобы регулярное выражение принимало тег в качестве параметра (в данном случае тег A).
Если вы попали в дочерний отбор или что-то большее, чем просто корневые элементы и ID / классы, это может быстро запутаться.
Подумайте только об определении стилей для начала?