Как использовать фильтр с помощью регулярных выражений в 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>
Другие вопросы по тегам