Возможно, вы создадите подходящее регулярное выражение с перехватами.
Похоже, что это работает для приведенного вами примера.
<property name="prefix" value="this " />
<replaceregexp flags="s" match="^(${prefix})?(.*)" replace="${prefix}\2">
<fileset dir="files" />
</replaceregexp>
- Файлы указаны с использованиемнабор файлов - здесь все файлы в каталоге
files
. - Префикс, который мы хотим добавить, является
this
, который хранится в свойстве, так как нам нужно упомянуть его в двух местах. - Параметр
flags="s"
гарантирует, что мы будем рассматривать файл как одну строку для целей сопоставления (а не сопоставлять каждую строку). - Регулярное выражение ищет строку префикса в файле и сохраняетэто в захвате
\1
- который отбрасывается. - Остальная часть строки находится в захвате
\2
. - Замените на строку префикса, за которой следует захват
\2
.
Вы можете подумать, что всегда добавляете префикс, но после удаления префикса, если он уже есть ... за исключением того, что задача replaceregexp
не запишет файл, если неотличается от существующего.