php正则表达式匹配最后一个斜杠之前的所有内容,除了尾部斜杠

时间:2017-01-07 13:40:26

标签: php regex

我希望正则表达式匹配最后一个斜杠之前的所有内容,同时排除可能的尾部斜杠。

/part1/part2/part3        should match /part1/part2
/part1/part2              should match /part1
/part1/part2/part3/       should match /part1/part2
/part1/part2/             should match /part1

到目前为止,我已经提出了这个问题:https://regex101.com/r/pKhYQU/1但是这仍然包含一个尾随斜杠。

1 个答案:

答案 0 :(得分:1)

使用preg_match,使用前瞻断言(?=/.)(这意味着后跟,这不是整场比赛的一部分,只是它的一部分测试):

~.*(?=/.)~

~.*(?=/[^/])~

demo

使用preg_replace

echo preg_replace('~/[^/]*/?$~', '', $path);

您还可以使用explode,删除最后一项,然后implode

$parts = explode('/', rtrim('/part1/part2/part3/', '/'));
array_pop($parts);
echo implode('/', $parts);