2016-01-20 7 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"); 

НТР [] будет содержать список ваших имен файлов.

Это в основном заменит все вещи «PENDING» и «.bsp» и разделит линии.

Надеюсь, это поможет!

P.S., это не требует регулярного выражения вообще! (чем легче, тем лучше)