1

次のようなものに一致する正規表現が必要です。

{RandomName Option="value"}
{AnotherRandomString AnotherOption="Another value" Option1="Woot woot"}

基本的に、{とランダムな文字列で始まり、その後にスペースが続き、次に、値の前後にand=記号と引用符が付いた名前と値の種類のペアのリストが続きます。私がこれまでに得ることができた最も遠いものは下にあります、しかしそれは私が思わないほど近くではありません:

preg_match_all(
        '#\{(.*?)\=(.*?)\}#ims',
        $this->search_string,
        $the_matches
    );
4

2 に答える 2

3

より具体的にあなたのケースに一致するより良い正規表現はここにあります:

#\{[^{}]+\=[^{}]+\}#ims

}これは、内部に緊密なブレースが存在しないことを前提としています。

{同様に例外を追加して編集します。

于 2012-03-06T20:56:22.907 に答える
1

これはどう?開始ラベル用に1つの番号付きグループを作成し、すべての名前/値ペア用に1つ、次に個別の名前/値ペアごとに1つ作成します。

{(\w+)\s+((\w+=".*?"\s*)+)}
于 2012-03-06T21:10:25.113 に答える