我有以下表示层次结构的字符串:
JHW/1/24/3/562 // child row
JHW/1/24/3 // parent of the above
JHW/1/24 // parent of the above
JHW/1 // parent of the above
JHW // parent of the above
我想做的就是能够把所有的父母"拉出来。有一个正则表达式的行。
我从概念上得到的最接近的(不是在任何地方附近)是#^([^/]*/)+#
,它恰好匹配倒数第二部分[例如。 3]
我之前从未尝试过这样的事情,我试图获得重叠的结果 - 有可能吗?如果它将子行恢复为其中一个匹配项,则不是问题。
答案 0 :(得分:2)
你无法从同一个位置获得多个结果(因为每次尝试模式后正则表达式引擎转到下一个字符),你可以用/
爆炸字符串并构建你需要的每个路径数组项。
另一种可能的方法是反转字符串:
preg_match_all('~(?=(?:\A|/)(.+))~', strrev($path), $m);
$result = array_map('strrev', $m[1]);