Я работаю над инструментом, который анализирует файлы для объявлений стиля CSS. Он использует очень сложное регулярное выражение, которое, помимо ожидаемых проблем с производительностью и нескольких незначительных ошибок, которые пока не затрагивают меня, делает все, что я хотел бы, за исключением одной вещи.
У меня он соответствует всем комбинациям имен элементов, классов, подклассов, псевдоклассов и т. Д. Однако, когда строка содержит более одного объявления, я могу получить его только один раз. В качестве примера, вот такая вещь, которая сбивает меня с толку в данный момент:
td.class1, td.class2, td.class3
{
background-color: #FAFAFA;
height: 10px;
}
Я могу написать выражение, которое удовлетворит это для всех трех объявлений, но так как я также собираю информацию после нее (фактическую информацию о стиле в скобках), я чувствую, что весь этот блок текста считается учтенным для этого двигатель переходит к следующему символу после всего блока, который был только что обработан.
Есть ли способ сделать это, когда каждый класс будет иметь отдельное совпадение, и все будут также включать информацию о стиле, которая следует за этим? Я знаю, что могу изменить свое регулярное выражение, чтобы оно соответствовало всей строке, а затем проанализировать его на запятые после получения соответствия, но я бы хотел сохранить всю свою логику внутри самого выражения, если это возможно.
Я могу опубликовать выражение и / или закомментированный код, который я использую, чтобы сгенерировать его, если оно абсолютно уместно для ответа, но выражение является огромным / уродливым (как все нетривиальные регулярные выражения), а код немного длинен ,