2

preg_match_all()次の目的でPHPで使用できる単一の正規表現を指定しようとしています(失敗しています) 。

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

{}の間にないもの{だけを数える必要があります。,上記のサンプルを考えると、正確に3つの一致が必要です。私の難しさ(無知)は、「中括弧の間のコンマを一致させない」部分を指定する方法がわからないことです。私の現在の正規表現は、すべてのコンマと中括弧を開きます。

({)*(,)*
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 に答える