oops somehow I did not read your comment in detail, but, nevertheless, a toy solution works here; -)
<project name="project" default="main">
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<property name="a" value="abc$" />
<property name="b" value="xyz" />
<path id="paths">
<pathelement location="abc$/def" />
<pathelement location="abc$/ghi" />
</path>
<target name="main">
<pathconvert property="list" refid="paths" pathsep="${line.separator}" dirsep="/" />
<propertyregex property="a" input="${a}" override="true" regexp="\$" replace="" />
<propertyregex property="list" input="${list}" override="true" regexp="\$" replace="" />
<propertyregex property="list" input="${list}" override="true" regexp="${a}" replace="${b}" />
<echo>${list}</echo>
</target>
</project>
result:
main:
[echo] /foobar/AntScripts/xyz/def
[echo] /foobar/AntScripts/xyz/ghi
BUILD SUCCESSFUL
IMO, using properties with '$' in it, is causing trouble, is there no other way ?!