2010-09-23 4 views
1

J'essaie d'extraire le répertoire et le nom de fichier d'un chemin. Je l'ai fait fonctionner avec des noms de fichiers normaux qui n'ont qu'un seul point dans le nom de l'extension, mais cela ne fonctionne pas s'il y a plusieurs points dans le nom du fichier.Ant Expression régulière, séparez un chemin dans le nom du répertoire et le nom du fichier où le nom du fichier comporte plusieurs points

résultats de cas normaux dans:

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

Je ne voulais traiter aussi un nom de fichier comme:

ui.effects.core-1.7-doublerebel.js 

résultats dans:

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

Quelqu'un peut-il aider à la expression régulière que j'ai.

${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> 

Merci

Andy

Répondre

0

Je ne sais pas le style ANT regex, mais je crois que si vous remplacez [^.] * Avec juste. *, votre regex va réussir. C'est à dire. quelque chose comme:

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

Br. Morten

4

Ant a obtenu basename et dirname tâches qui accomplissent ce que vous cherchez

<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> 
Questions connexes