Ant正则表达式,将路径分隔为目录名和文件名,其中文件名具有多个点

时间:2010-09-23 08:20:19

标签: regex 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>

谢谢

安迪

2 个答案:

答案 0 :(得分:4)

Ant已经完成了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>

答案 1 :(得分:0)

我不知道ANT风格的正则表达式,但我相信如果你用。*替换[^。] *,你的正则表达式就会成功。即类似的东西:

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

溴。的Morten