Ant Регулярное выражение, разделите путь на имя каталога и имя файла, где имя файла состоит из нескольких точек - PullRequest
1 голос
/ 23 сентября 2010

Я пытаюсь извлечь каталог и имя файла из пути. У меня это работает с обычными именами файлов, которые имеют только одну точку как часть имени расширения, но не работает, если в имени файла несколько точек.

Нормальный регистр приводит к:

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>

Спасибо

Andy

Ответы [ 2 ]

4 голосов
/ 23 сентября 2010

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>
0 голосов
/ 23 сентября 2010

Я не знаю регулярное выражение в стиле ANT, но я верю, что если вы замените [^.] * На просто. *, Ваше регулярное выражение выполнится успешно.Т.е. что-то вроде:

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

руб.Morten

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...