2016-01-20 59 views
0

所以我有一個文件名列表,我希望將其放入數組中。從文件列表中返回文件名

下面的列表,我將試圖從中提取數據的一個例子:

------------- 
PENDING: (fs) gm_construct.bsp 
PENDING: (fs) gm_flatgrass.bsp 
... 

會正則表達式能夠通過這個名單來分析,只是拉這些位:

gm_construct 
gm_flatgrass 
例如,

然後需要將每個條目推入數組中。

這會表達也可以通過列表比這更長的時間來運行,還可以處理不同的前綴,如:

ttt_terrortown 
+2

難道你不覺得你可以刪除'PENDING:(fs)',修剪並獲得一個子串直到第一個'.'?不需要正則表達式。 –

+0

可能。這是否適用於所有文件名?因爲這個列表實際上只是一個很長的字符串。 –

+0

通過迭代線條,只得到以「PENDING:(fs)'開頭的內容,並移除,修剪等。 –

回答

0

最後一位朋友想出了一個小正則表達式來做我想做的事。可能不像其他答案那麼簡單,但它是我個人將要使用的那個,對我的用例來說工作正常。

preg_match_all("/(?<=fs\)).*?(?=\.bsp)/", $maps, $map_list); 

這對我來說沒竅門。將每個文件名分割成一個數組,然後我可以迭代。

0

僞代碼:

str.replaceAll("PENDING: (fs) ", ""); 
str.replaceAll(".bsp", ""); 
str.replaceAll("-", ""); 

str[] = str.split("\n"); 

的STR [1]將包含一個列表的文件名稱。

這基本上代替了所有「PENDING」的東西和「.bsp」的東西,並分割線。

希望這會有所幫助!

P.S.,這根本不需要正則表達式! (越容易越好)