正则表达式 - 匹配所有子部分

时间:2014-09-22 15:01:38

标签: regex pcre

我有以下表示层次结构的字符串:

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]

我之前从未尝试过这样的事情,我试图获得重叠的结果 - 有可能吗?如果它将子行恢复为其中一个匹配项,则不是问题。

1 个答案:

答案 0 :(得分:2)

你无法从同一个位置获得多个结果(因为每次尝试模式后正则表达式引擎转到下一个字符),你可以用/爆炸字符串并构建你需要的每个路径数组项。

另一种可能的方法是反转字符串:

preg_match_all('~(?=(?:\A|/)(.+))~', strrev($path), $m);

$result = array_map('strrev', $m[1]);