我有一个字符串:
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
实际上是出于如何实现这一点的想法。
所以现在,我最棘手的障碍是找到第一级的所有事件。这样我就可以递归地挖掘字符串并检索我需要的所有子集。
答案 0 :(得分:4)
你可以通过字符串并将{
的位置放到堆栈上,从该堆栈中弹出}
pop。
然后您将获得列表,但顺序不同:
abc{def}ghij{kl{mn}o{pq}}r{s{t{u{v}}w}}xyz
这将是一个带循环的解决方案。