冷血新手,正则表达新手......
我有一个文件目录,以“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", ""), "." )#>
对其他人也许有用!
答案 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>