-5

私は文字列を持っています:

abc{def}ghij{kl{mn}o{pq}}r{s{t{u{v}}w}}xyz

目標は、括弧内のすべてを抽出することです。

1. def
2. kl{mn}o{pq}
3. mn
4. pq
5. s{t{u{v}}w}
6. t{u{v}}w
7. u{v}
8. v

正規表現またはループのいずれかの解決策を探します。

編集:

さて、これが気になり始めたので、私が試したことは次のとおりです。

preg_match("/(\{[^\{]+\})+/", $str, $matches); // matches only first occurrence
preg_match_all("/(\{[^\{\}]+\})+/", $str, $matches); // this matches only the final level occurrences

そして実際には、これをどのように達成できるかというアイデアから。

したがって、今のところ、私の最大の障害は、1 番目のレベルですべてのオカレンスを見つけることです。このようにして、文字列を再帰的に掘り下げ、必要なすべてのサブセットを取得できました。

4

1 に答える 1

4

文字列を調べて、そのスタックからのポップ{の一致を作成するスタックに位置を置くことができます。}

次に、リストを取得しますが、順序は異なります。

abc{def}ghij{kl{mn}o{pq}}r{s{t{u{v}}w}}xyz
  1. デフォルト
  2. pq
  3. kl{mn}o{pq}
  4. v
  5. あなた{v}
  6. t{u{v}}w
  7. s{t{u{v}}w}

これは、ループを使用したソリューションになります。

于 2013-01-26T00:00:41.027 に答える