我试图(和失败)指定一个正则表达式,我可以用PHP的preg_match_all()
使用以下正则表达式匹配:计数CSS选择
.foo { bar }
.baz, .bot { bip, bop }
我需要计算所有{
只有,
这不在{}之间。鉴于上面的例子,我应该有三场比赛。我的困难(无知)是我不明白如何指定“花括号之间不匹配逗号”部分。我现在的正则表达式所有逗号开放大括号匹配:
({)*(,)*
我试图(和失败)指定一个正则表达式,我可以用PHP的preg_match_all()
使用以下正则表达式匹配:计数CSS选择
.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
太棒了!只需要忽略换行符:'preg_match_all('/ \ {。+?\} |,/ s',$ contents,$ matched);' – benmarks
如果你想接近,但没有确切的统计,这是一个快速肮脏的方式去做
$selector_count = substr_count($css, ',') + substr_count($css, '{') - substr_count($css, '@media');
它会计算css中的任何,
,因此使用,
的规则(如rgba(0, 0, 0, 0.5)
)也会计算在内。如果您了解这些限制,这会很有用。接受的解决方案不适用于@media
。
3场比赛应该是.foo,.bar和.bot,对吧?不是吧,bip和bop? – sp00m
@ sp00m - 文字不重要。我试图计算CSS选择器的总数,它可以被确定(单向)为“开启花括号的总数”加上“不用花括号括起来的逗号的总数”。当然还有其他一些方法可行。 – benmarks