我正在尝试(并且失败)指定一个可以与 PHP 一起使用的单个正则表达式preg_match_all()
:
.foo { bar }
.baz, .bot { bip, bop }
我需要计算所有{
且仅,
不在 {} 之间的。鉴于上面的示例,我应该正好有三个匹配项。我的困难(无知)是我不明白如何指定“大括号之间不匹配逗号”部分。我当前的正则表达式匹配所有逗号和左大括号:
({)*(,)*
尝试这个:
\{.+?\}|,
意义:
\{ # If you can match a brace
.+? # then also grab the minimum amount of other charactors
\} # until you reach the closing brace
|, # or if there was no brace then just match a comma
如果您想要一个接近但不准确的计数,这是一种快速而肮脏的方法
$selector_count = substr_count($css, ',') + substr_count($css, '{') - substr_count($css, '@media');
它会计算,
css 中的任何内容,因此类似rgba(0, 0, 0, 0.5)
使用的规则,
也会被计算在内。如果您了解这些限制,这将很有用。接受的解决方案不适用于@media
.