ant propertyregex:路径中\的问题

时间:2011-07-06 11:01:25

标签: java ant

当我做这样的事情时:

<propertyregex input="${escaped.std}" regexp=".*[/\\]data[/\\](.*)" select="\1" property="relative.std"/>

其中escaped.std是ex: c:\ test \ data \ subfolder1 \ subfolder2 它返回 subfolder1subfolder2 (没有'\'的路径)

我尝试将'\'更改为'\\',但它只是从路径中删除了'\\'。

问题出在哪里?

2 个答案:

答案 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