2013-12-13 3 views
1

Я новичок в муравей, и я пытаюсь следующее: -Regular Expression Использование Ant

У меня есть файл с именем info.2013.tar.gz .Это в месте memo.dir. Я должен передать этот файл в переменную в ant и написать регулярное выражение, чтобы получить год i.e. 2013 в цели муравья. Я работаю над perl, и я знаю, как это сделать, используя perl, но я не знаю, как это сделать с помощью муравья. Может кто-нибудь, пожалуйста, помогите мне.

<target name = "new" depends="load-props,classpath"> 
      <fileset dir = "${memo.dir}"> 
      <include name = "*.tar.gz"/> 
      </fileset> 
</target> 

Я пробовал что-то подобное, но это не помогло.

ответ

4
<pathconvert property="year"> 
    <mapper type="regexp" from="([^.]+)[.]tar[.]gz" to="\1"/> 

    <path> 
     <fileset dir="${memo.dir}"> 
      <include name="*.tar.gz"/> 
     </fileset> 
    </path> 
</pathconvert> 

<echo>year: ${year}</echo> 
+0

Не могли бы вы объяснить мне регулярное выражение, которое вы использовали? Как мне получить информацию от info.2013.tar.gz? – Newbie

0

Вы можете использовать задачу скрипта со встроенным (с JDK 6) движком javascript, f.e. :

<project> 
<!-- create macrodef for reuse --> 
<macrodef name="splitstring"> 
    <attribute name="str" /> 
    <attribute name="by" /> 
    <attribute name="index" /> 
    <attribute name="result" /> 
    <sequential> 
    <script language="javascript"> 
    // create property for further proccessing 
    project.setProperty('@{result}', '@{str}'.split('@{by}')['@{index}']); 
    </script> 
    </sequential> 
</macrodef> 

<fileset dir = "${memo.dir}" id="whatever"> 
    <include name = "*.tar.gz"/> 
</fileset> 

<splitstring by="." str="${toString:whatever}" index="1" result="foobar" /> 

<echo>$${foobar} => ${foobar}</echo> 

</project> 

выход:

[echo] ${foobar} => 2013 

Обратите внимание, что project.setProperty() может перезаписать существующее свойство с тем же именем, в противном случае использовать project.setNewProperty(), так:

<property name="foobar" value="value"/> 

<splitstring by="." str="${toString:whatever}" index="1" result="foobar" /> 

приведет:

[echo] ${foobar} => value