次のフォーマットされたサンプル文字列があります。
== header == information about things ==headeragain== info can have characters like.*?{=
などを一行で。
キーが「==.+?==」で、値がキーの後の情報になるように、これをハッシュに解析したいと思います。これらのペアをグローバルに一致させるために、いくつかの正規表現を試しました。
%hash = $string =~ /(==.+?==)(.+)/g
と
%hash = $string =~ /(==.+?==)(.+?)/g
最初のキーに一致し、次にその値として他のすべてに一致し、それぞれのキーだけに一致します。
%hash = $string =~ /(==.+?==)(.+(?===.+?==))/g
次の鍵を先取りすることになっていますが、私が理解しているように「食べ尽くす」ことはありません。ただし、最初のペアのみに一致し、それ以上は進みません。
この問題は、グローバル修飾子がどのように機能するかについての誤解から生じたと思います。エクスプレッションの 1 つを微調整する必要がありますか? それとも、まったく違うことをする必要がありますか?