2010-09-23 79 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> 
相关问题