Функции регулярных выражений в свойствах немного неудобны в нативном Ant (в отличие от работы с текстом в файлах).У Ant-contrib есть задача replaceregexp
, но я стараюсь по возможности избегать ant-contrib.
Вместо этого ее можно выполнить с помощью задачи loadfile
и вложенного фильтра:
<property name="version" value=".v_september" />
<loadfile property="version.month.short">
<propertyresource name="version" />
<filterchain>
<tokenfilter>
<replaceregex pattern="\.v_(.{3}).*" replace="\1" />
</tokenfilter>
</filterchain>
</loadfile>
<echo message="${version.month.short}" />
Что касается шаблона регулярного выражения, обратите внимание, как он должен заканчиваться на .*
.Это связано с тем, что в Ant нет функции match, которая просто возвращает содержимое группы захвата.Он просто выполняет замену, поэтому нам нужно заменить все в строке, которая не является частью группы.