Php 如何使用正则表达式从绝对路径提取文件名

Php 如何使用正则表达式从绝对路径提取文件名,php,regex,Php,Regex,我正试图从以下行中提取文件名: "GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP/1.1" 200 26651 在这种情况下,预期结果应该是“font-awesome.css” 我的正则表达式走了这么远: \"(.[^\"]+)\s+HTTP 上面的正则表达式返回:“GET/mapitzend/public/components/font-awesome/css/font-awesome.css

我正试图从以下行中提取文件名:

"GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP/1.1" 200 26651
在这种情况下,预期结果应该是“font-awesome.css” 我的正则表达式走了这么远:

\"(.[^\"]+)\s+HTTP
上面的正则表达式返回:“GET/mapitzend/public/components/font-awesome/css/font-awesome.css HTTP

我在这里遗漏了什么..

试试这个正则表达式:

(?试试这个正则表达式:


(?使用
regex
提取文件名是可能的,使用
regex
提取路径,然后使用或获取文件名更容易:

仅使用
regex

if (preg_match('#GET /(.*/)*(.*) HTTP#', $line, $m)) {
    $filename = $m[2];
}

虽然可以使用
regex
提取文件名,但开始使用
regex
提取路径,然后使用或获取文件名更容易:

仅使用
regex

if (preg_match('#GET /(.*/)*(.*) HTTP#', $line, $m)) {
    $filename = $m[2];
}

使用具有特定扩展名的文件名属性,如
.css
.html
,可以使用以下正则表达式

正则表达式:
[^\/]+?\.[a-z]+

说明:

[^\/]+?
匹配前一个字符为
/
的字符串

\.[a-z]+
匹配扩展名,确保它是一个文件


使用具有特定扩展名的文件名属性,如
.css
.html
,可以使用以下正则表达式

正则表达式:
[^\/]+?\.[a-z]+

说明:

[^\/]+?
匹配前一个字符为
/
的字符串

\.[a-z]+
匹配扩展名,确保它是一个文件