我正在尝试从路径中提取目录和文件名。 我使用普通文件名,只有一个点作为扩展名的一部分,但如果文件名中有多个点,它就无法工作。
正常情况导致:
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 :(得分:4)
Ant已经完成了basename和dirname个任务,可以实现您的目标
<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