我正在檢索文件列表,但解析器正在打破其中一個文件。所以我打算在對其進行修改:是否有正則表達式來解析FTP目錄列表中的值?
正則表達式:
/ +/g
這裏是一個上市了有麻煩:
drw-rw---- 2 joeUser dhapache 7 May 18 2011 Hello World.html
是否有一個正則表達式的人用它來解析文件列表?此外,有確定的假設,任何之後的第9位是文件名(其中要拆分的空格字符?
我正在檢索文件列表,但解析器正在打破其中一個文件。所以我打算在對其進行修改:是否有正則表達式來解析FTP目錄列表中的值?
正則表達式:
/ +/g
這裏是一個上市了有麻煩:
drw-rw---- 2 joeUser dhapache 7 May 18 2011 Hello World.html
是否有一個正則表達式的人用它來解析文件列表?此外,有確定的假設,任何之後的第9位是文件名(其中要拆分的空格字符?
如果是我,我會確保你的回報數據進行格式化,以填補在給定數量每個字段中的字符,填充其中具有空間需要然後我的正則表達式將是這樣的:
^(.*{12})(.*{3})(.*{20})(.*{20})(.*{3})(.*{12})(.*{30})
其中:
\1 = permissions
[...]
\6 = date
\7 = filename
一旦你對每場比賽/組的值,修剪產生的數據。
有意義嗎?
如果可能的話,使用具有像一個固定的格式MLSD
FTP命令:
type=file;modify=20150803062903;size=1410887680; filename.avi
見RFC 3659。
回退到LIST
命令只能作爲最後的手段對不支持它(如IIS)服務器。
如果您需要的文件名而已,使用NLIST
命令。所有的服務器都支持它,它只產生文件名,所以不需要解析。
有對LIST
命令中沒有定義的格式。所以假設任何事情都是不安全的。
特別的IIS使用了完全不同的格式:
02-11-15 03:05PM 1410887680 movie.avi
即使使用一個類Unix服務器的格式,該格式將與文件的年齡差異。如果該文件是夠新,它的時間格式如:
-rw-r--r-- 1 ftp ftp 11 Sep 09 16:00 new_file.txt
這也是很常見的爲用戶和組列糅合在一起,如果用戶名是太長。
不幸的是,我沒有什麼服務器返回的控制。它適用於大型應用程序中的小型集成FTP模塊,用戶可以使用自己的服務器。 –
換句話說,檢查返回數據是否被格式化爲用空格填充值,以便重要數據位於每行相同的字符數:) – CLaFarge