如何在Coldfusion中使用正则表达式的过滤器

时间:2012-04-22 21:22:18

标签: regex coldfusion cfdirectory

冷血新手,正则表达新手......

我有一个文件目录,以“some”命名后跟一个13位数字,后跟下划线,ID和文件结尾如下:

  some0000000000000_ID.jpg

ID可以是任何字符串。

我如何使用正则表达式获取ID?我想我会找到类似这样的东西,它捕获下划线和文件结束点之间的所有内容:

  _\A[A-Z]*[a-z]*[0-9]*$

但我真的没有到达任何地方。有人能指出我正确的方向吗?

谢谢!

修改
我最终这样做了,这是 hack-ish ,但效果很好:

<cfset cropFront = #ListRest(ReReplaceNoCase(name, ".png|.jpg", ""), "_")#>
<cfset cropFull = #ListFirst(ReReplaceNoCase( cropFront, "xxxxx", ""), "." )#> 

对其他人也许有用!

2 个答案:

答案 0 :(得分:5)

<cfdirectory name="images" directory="#path#" filter="some?????????????_ID.jpg">

过滤器不是正则表达式模式。它只知道?*通配符。

答案 1 :(得分:2)

目前无法测试,但这是个想法...

<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>