私の仕事は、ログ ファイルを PHP スクリプトで分析することです。さらに分析するためにログ レコードを分割するために、REGEX を使用します。ログ レコードは次のようになります。
param1=val1;param2=val2;param3=val3;[int1Param1=int1Val1;int1Param2=int1Val2;][int2Param1=int2Val1;int2Param2=int2Val2;][int3Param1=int3Val1;int3Param2=int3Val2;]param4=val4;
そのため、分析する必要のあるパラメーターと値のセットがあり、この部分に問題はありません。私の懸念は、param3 と param4 の間の一連の角括弧内にある「セッション データ」です。問題は、この部分にどれだけのレコードがあるか分からないことです (この部分のレコードは 0 個以上になる可能性があります)。この部分を次の正規表現で識別しています。
(\[[^\]\[]+\])*
「param3=val3;」の間の完全な文字列を完全に識別します。および「param4=val4;」preg_match の $matches 配列の「0」要素として返します。内容をさらに分析するために、このすべてのブラケットも配列要素として取得する必要がありますが、$matches には 2 つの要素しか含まれていません。「1」 - 最後の「括弧」。何か案は?ありがとうデニス。