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]+
匹配扩展名,确保它是一个文件