我試圖(和失敗)指定一個正則表達式,我可以用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