1

コールドフュージョンは初めて、正規表現は初めて...

「some」の後に13桁の数字が続き、その後にアンダースコア、ID、ファイルが次のように終わるファイルのディレクトリがあります。

  some0000000000000_ID.jpg

IDは任意の文字列にすることができます。

正規表現を使用してIDを取得するにはどうすればよいですか?アンダースコアとファイルの末尾のドットの間のすべてをキャプチャする、次のようなものを探していると思います。

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

しかし、私は本当にどこにも行きません。誰かが私を正しい方向に向けることができますか?

ありがとう!

編集:
私はこのようにそれをすることになりました、それはハックっぽいですがうまく機能します:

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

多分他の誰かにも役立つでしょう!

4

2 に答える 2

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

フィルタは正規表現パターンではありません。?*ワイルドカード文字のみを認識します。

于 2012-04-22T21:26:31.960 に答える
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>
于 2012-04-22T21:28:13.613 に答える