Я пытаюсь сопоставить все селекторы и директивы CSS, приведенные ниже, за исключением любых комментариев и любых медиазапросов.
a {color: red !important;}
#p1 {
margin-top: 20px !important
}
/* Client-specific styles */
.ExternalClass,
.ExternalClass p,
.ExternalClass span,
.ExternalClass font,
.ExternalClass td,
.ExternalClass div {
line-height: 100%;
}
a {}
@media query {
a { display:none }
}
У меня есть следующий RegEx: [a-zA-Z#.:*]{1}[^\/*]+?{[\s\S]*?}
.Это соответствует всему правильно, но включает @media query
.Я пытался использовать отрицательный взгляд, например, (?!.+@media.+)
, но это не помогло.
Что я могу сделать, чтобы извлечь только селекторы / директивы?
Пример: https://regex101.com/r/JmjthP/3
Решение
С помощью @Wiktor Stribiżew рабочее решение было таким:
/^(?!.*@media)[\t ]*([a-zA-Z#.:*\[][^{\/]*\s*){[\s\S]*?}/