2010-09-23 78 views
1

我想從路徑中提取目錄和文件名。 我已經得到它使用正常的文件名,只有一個點作爲擴展名的一部分,但如果文件名中有多個點,它將無法正常工作。Ant正則表達式,將路徑分隔到文件名有多個點的目錄名和文件名中

正常情況下的結果:

Web Content/javascript/more/andmore/evenmore AND uidoublerebel 

我想它也處理這樣一個文件名:

ui.effects.core-1.7-doublerebel.js 

結果:

Web Content/javascript/more/andmore/evenmore AND ui.effects.core-1.7-doublerebel 

誰能與幫助正則表達式我有。

${content.dir.unix}/([^\.]*)/([^\.]*)\.((css)|(js))$

<property name="content.dir.path" value="C:/ajm/zip/jdw-content"/> 

<property name="file.name.problem" value="C:/ajm/zip/jdw-content/Web Content/javascript/ore/andmore/evenmore/ui.effects.core-1.7-doublerebel.js"/> 

<property name="file.name.works" value="C:/ajm/zip/jdw-content/Web Content/javascript/more/andmore/evenmore/uidoublerebel.js"/> 

<propertyregex override="yes" 
    property="zip.dir.structure" input="${file.name.problem}" 
    regexp="${content.dir.unix}/([^\.]*)/([^\.]*)\.((css)|(js))$" replace="\1 AND \2"/> 
<echo> messge = ${zip.dir.structure}</echo> 

感謝

安迪

回答

0

我不知道ANT作風正則表達式,但我相信,如果要更換[^] *只。 *,你的正則表達式會成功。即例如:

${content.dir.unix}/(.*)/(.*)\.((css)|(js))$ 

Br。莫滕

4

螞蟻已得到basenamedirname任務是完成你在找什麼

<project name="demo" default="build"> 

    <property name="file.name.problem" value="Web Content/javascript/ore/andmore/evenmore/ui.effects.core-1.7-doublerebel.js"/ 

    <dirname property="file.dirname" file="${file.name.problem}"/> 
    <basename property="file.basename" file="${file.name.problem}" suffix=".js"/> 

    <target name="build"> 
     <echo> 
     Original: ${file.name.problem} 

     Dirname: ${file.dirname} 
     Basename: ${file.basename} 
     </echo> 
    </target> 

</project> 
相關問題