[英]How to extract a filename using regex from an absolute path
我正在嘗試從以下行中提取文件名:
"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
我在這里想念什么..
試試這個正則表達式:
(?<=\\/)[^\\s\\/]*(?=\\s*HTTP)
說明:
(?<=\\/)
-向后尋找正號,以找到緊跟/
的位置 [^\\s\\/]*
-匹配0+次出現的既不是空格字符也不是/
的任何字符 (?=\\s*HTTP)
-要匹配的正向超前,直到位置緊跟着0+空格和HTTP
。 雖然可以使用regex
提取文件名,但是開始使用regex
提取路徑然后使用basename()
或pathinfo()
獲取文件名更容易:
$line = '"GET /mapitzend/public/components/font-awesome/css/font-awesome.css HTTP/1.1" 200 26651';
$m = array();
if (preg_match('/GET (.*) HTTP/', $line, $m)) {
$filename = basename($m[1]);
}
僅使用regex
:
if (preg_match('#GET /(.*/)*(.*) HTTP#', $line, $m)) {
$filename = $m[2];
}
使用擴展名為.css
, .html
的文件名的屬性,可以使用以下正則表達式。
正則表達式: [^\\/]+?\\.[az]+
說明:
[^\\/]+?
匹配前一個字符為/
的字符串。
\\.[az]+
與擴展名匹配,以確保它是文件。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.