preg_的正则表达式模式替换最后一个斜杠和以下所有字符


Regular expression pattern for preg_replace the last slash and all the following characters

我不知道如何为我的preg_replace模式编写正确的模式。
我的情况是这样的:我有一个URL,假设是:

$url = "first/second/third/fourth"

现在,我只需要删除最后一个"/"和之后的所有字符。所以结果应该是这样的:

first/second/third

此刻我是这样解决的:

$result = substr($url, 0, (strrpos($url, "/")));

但是我知道应该有正确的模式写入我的preg_replace.
任何建议吗?

量入为出;它既简单又有效。更少的括号可以使它看起来不那么复杂:

$result = substr($url, 0, strrpos($url, '/'));

正则表达式看起来像这样:

$result = preg_replace('#/[^/]*$#', '', $url);

一样长,只是更容易混淆。

匹配一个斜杠,后面跟着零个或多个非斜杠的字符,后面跟着字符串的结尾:

preg_replace("/[^/]*$", "", $url)

或者,使用非贪婪匹配(*?),这也应该工作:

preg_replace("/.*?$", "", $url)