Ant propertyregex表现得很奇怪

时间:2011-12-01 10:39:50

标签: regex ant properties

我有以下内容:

<propertyregex property="myProp" input="${someInput}"
               regexp="(.*)" 
               replace="-f -d '\1'"
               override="true"/>

propertyregex的目的是获取someInput的值并将其放在单个qoutes中,并在前面添加-f和-d标志。 如果我将someInput设置为myString,那么我期望的结果是:

-f -d 'myString'

但我明白了:

-f -d 'myString'-f -d ''

任何人都可以解释尾随-f -d'来自何处?

1 个答案:

答案 0 :(得分:0)

正则表达式匹配两次。一旦它匹配整个字符串,然后它匹配字符串末尾的空字符串(因为星号允许零长度匹配)。

使用

<propertyregex property="myProp" input="${someInput}"
               regexp="^.*" 
               replace="-f -d '\0'"
               override="true"/>

\0包含整个匹配,因此您也不需要捕获括号。)

另见this question