0

(HTTP ヘッダーからの) 文字列があり、それを辞書に分割したいと考えています。

foo = \"bar\",baz=\"fooz\", beta= \"gamma\"

文字列が毎回同じであることは保証できません。スペースがある場合とない場合があります。二重引用符がエスケープされる場合とそうでない場合があります。

そこで、正規表現を使用してPHPで解決策を見つけました。残念ながら、iOS で動作するように変換することはできません。

preg_match_all('@('.$key.')=(?:([\'"])([^\2]+?)\2|([^\s,]+))@', $input, $hits, PREG_SET_ORDER);

foreach ($hits as $hit) {
    $data[hit[1]] = $hit[3] ? $hit[3] : $hit[4];
}

これをObjective-Cに変換するのを手伝ってくれる人はいますか?

4

1 に答える 1

0

ちょっと正規表現の第一人者である男に会いました。彼はすべてを説明し、RegExで次の(機能する!!!!)ソリューションを得ました。

これにより、次のような文字列が得られますfoo="bar"

(?<=[,\\s])((realm|qop|nonce|opaque)=(?:([\"'])([^\2]+?)\2|([^\\s,]+)))

次に、別の RegEx を使用してキーと値で分割し、辞書を作成します。

于 2012-12-12T12:29:50.053 に答える