2

我正在尝试(并且失败)指定一个可以与 PHP 一起使用的单个正则表达式preg_match_all()

.foo { bar }
.baz, .bot { bip, bop }

我需要计算所有{且仅,不在 {} 之间的。鉴于上面的示例,我应该正好有三个匹配项。我的困难(无知)是我不明白如何指定“大括号之间不匹配逗号”部分。我当前的正则表达式匹配所有逗号和左大括号:

({)*(,)*
4

2 回答 2

2

尝试这个:

\{.+?\}|,

意义:

\{   # 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
于 2012-09-24T14:44:29.080 回答
1

如果您想要一个接近但不准确的计数,这是一种快速而肮脏的方法

$selector_count = substr_count($css, ',') + substr_count($css, '{') - substr_count($css, '@media');

它会计算,css 中的任何内容,因此类似rgba(0, 0, 0, 0.5)使用的规则,也会被计算在内。如果您了解这些限制,这将很有用。接受的解决方案不适用于@media.

于 2017-03-09T23:57:09.487 回答