Как использовать фильтр с помощью регулярных выражений в Coldfusion
Новое в холодном синтезе, новое в регулярном выражении...
У меня есть каталог файлов с именем "some", за которым следует 13-значный номер, за которым следует подчеркивание, ID и окончание файла, например:
some0000000000000_ID.jpg
ID может быть любой строкой.
Как бы я получить идентификатор с помощью регулярных выражений? Я думаю, я бы искал что-то вроде этого, которое захватывает все между подчеркиванием и конечной точкой файла:
_\A[A-Z]*[a-z]*[0-9]*$
но я действительно никуда не денусь. Может ли кто-нибудь указать мне правильное направление?
Спасибо!
РЕДАКТИРОВАТЬ:
Я закончил тем, что делал это так, что взломано, но хорошо работает:
<cfset cropFront = #ListRest(ReReplaceNoCase(name, ".png|.jpg", ""), "_")#>
<cfset cropFull = #ListFirst(ReReplaceNoCase( cropFront, "xxxxx", ""), "." )#>
Может быть, полезно и для кого-то еще!
2 ответа
<cfdirectory name="images" directory="#path#" filter="some?????????????_ID.jpg">
Фильтр не является регулярным выражением. Это знает только ?
а также *
подстановочные знаки.
Не могу проверить в данный момент, но это идея...
<cfdirectory name="files" directory="path" action="list" />
<cfloop query="files">
<cfset findinfo = refind("^some(\d{13})_", files.name, 0, true) />
<cfif arraylen(findinfo.pos) eq 2>
<cfset fileid = mid(files.name, findinfo.pos[2], findinfo.len[2]) />
<!--- do something --->
</cfif>
</cfloop>