我希望正则表达式匹配最后一个斜杠之前的所有内容,同时排除可能的尾部斜杠。
/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但是这仍然包含一个尾随斜杠。
答案 0 :(得分:1)
使用preg_match
,使用前瞻断言(?=/.)
(这意味着后跟,这不是整场比赛的一部分,只是它的一部分测试):
~.*(?=/.)~
或
~.*(?=/[^/])~
使用preg_replace
:
echo preg_replace('~/[^/]*/?$~', '', $path);
您还可以使用explode
,删除最后一项,然后implode
:
$parts = explode('/', rtrim('/part1/part2/part3/', '/'));
array_pop($parts);
echo implode('/', $parts);