Ant Tokenizer:选择单个令牌

时间:2010-03-05 08:38:57

标签: java ant build-process

我有以下蚂蚁任务:

<loadfile property="proj.version" srcfile="build.py">
    <filterchain>
        <striplinecomments>
            <comment value="#"/>
        </striplinecomments>
        <linecontains>
            <contains value="Version" />
        </linecontains>
    </filterchain>
</loadfile>
<echo message="${proj.version}" />

输出

 [echo] config ["Version"]          = "v1.0.10-r4.2"

如何使用标记生成器仅获取v1.0.10-r4.2,相当于

| cut -d'"' -f4

1 个答案:

答案 0 :(得分:3)

您可以在filterchain中使用containsregex元素作为tokenfilter

这应过滤其中包含"Version"的所有行,并作为内容返回唯一捕获的群组:“vx.y.zz....

    &LT; containsregex             图案= “^。?\” 版\ “ \ ”(V [^ \“] +?)\”。”             replace =“\ 1”/&gt; 不起作用。
可能是&lt; containsregex             图案= '^。
? “版本”。 “(V [^ \”] +?)”。'             replace =“\ 1”/&gt; 可以工作(使用parameter属性的单引号,允许参数值内的非转义双引号) 功能

实际上,OP John Oxley提供了一个工作解决方案,双引号(\")替换为&quot;

<containsregex
        pattern="^.*?&quot;Version&quot;.*&quot;(v[^&quot;]+?)&quot;.*"
        replace="\1" />