当我做这样的事情时:
<propertyregex input="${escaped.std}" regexp=".*[/\\]data[/\\](.*)" select="\1" property="relative.std"/>
其中escaped.std是ex: c:\ test \ data \ subfolder1 \ subfolder2 它返回 subfolder1subfolder2 (没有'\'的路径)
我尝试将'\'更改为'\\',但它只是从路径中删除了'\\'。
问题出在哪里?
答案 0 :(得分:2)
尝试使用最新版本的ant-contrib。
使用ant-contrib 1.0b2时它确实可以正常工作(使用0.6版时我遇到同样的问题)。
答案 1 :(得分:0)
两种解决方案
首先是antcontrib
第二个是Flaka
<project xmlns:fl="antlib:it.haefelinger.flaka">
<taskdef resource="net/sf/antcontrib/antlib.xml"/>
<property name="escaped.std" value="c:\test\data\subfolder1\subfolder2"/>
<!-- solution antcontrib-1.0b3.jar -->
<propertyregex input="${escaped.std}" regexp=".:\\(\w+\\){2}(.+)" select="\2" property="relative.std_ac"/>
<echo>$${relative.std_ac} => ${relative.std_ac}</echo>
<!-- solution with Flaka -->
<fl:let>
relative.std_fl ::= replace(property['escaped.std'],'$2','.:\\\\(\\w+\\\\){2}(.+)')
</fl:let>
<echo>$${relative.std_fl} => ${relative.std_fl}</echo>
</project>
输出:
[echo] ${relative.std_ac} => subfolder1\subfolder2
[echo] ${relative.std_fl} => subfolder1\subfolder2