Ruby RegExp – 匹配所有CSS选择器和指令
我正在尝试匹配下面的所有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.+)
,例如(?!.+@media.+)
但这没有用。
如何仅提取选择器/指令,我该怎么办?
示例: https : //regex101.com/r/JmjthP/3
解
在@WiktorStribiżew的帮助下,工作解决方案如下:
/^(?!.*@media)[\t ]*([a-zA-Z#.:*\[][^{\/]*\s*){[\s\S]*?}/
你可以用
^(?!.*@media) *[a-zA-Z#.:*][^{]*{[\s\S]*?}
请参阅正则表达式演示
细节
-
^
– 字符串的开头 -
(?!.*@media)
– 除了换行符之外的任何0+字符后都不允许@media
-
*
– 0+空格 -
[a-zA-Z#.:*]
– 一封信,#
[a-zA-Z#.:*]
,:
或*
-
[^{]*
– 除{
以外的零个或多个字符 -
{
– 一个{
char -
[\s\S]*?
– 0+字符,尽可能少。 -
}
– a}
char