Ant匹配给出误报

时间:2013-05-27 14:59:54

标签: regex ant-contrib

我试图在匹配任务的帮助下处理/跳过任务。 但是我得到了“误报”,当我认为它应该返回假时,匹配返回true 正在使用以下代码:

<property name="moduleList" value="AP|MR"/>
<echo message="ModuleList is ${moduleList}" />
...some for loop here...
<echo message="Found ${zipFilename}" />
<if>
    <matches pattern="${moduleList}" string="${zipFilename}" />
    <then>
        <echo message="Creating ${zipFilename}" />
    </then>
    <else>
        <echo message="Skipping ${zipFilename}" />
    </else>
</if>

zipfileName是通过循环访问文件夹并获取文件的基本名称来确定的,遇到的zipfileNames是AP,MR和VAP
这段代码的结果是:

[echo] ModuleList is AP|MR
[echo] Found AP
[echo] Creating AP
[echo] Found MR
[echo] Creating MR
[echo] Found VAP
[echo] Creating VAP
[echo] Found eFormsPolicy
[echo] Skipping eFormsPolicy

所以据我说VAP是假阳性 或者我的比赛有问题吗?

未设置AFAIK ant.regexp.regexpimpl,因此ant正在使用Jdk14Regexp实现

1 个答案:

答案 0 :(得分:1)

因为VAPAP结尾,你是否会得到误报?如果您将匹配模式更改为^(${moduleList})$怎么办?实际替换moduleList时,它将变为^(AP|MR)$,与VAP不匹配。