ANT删除空格正则表达式

时间:2012-11-27 12:30:47

标签: regex ant spaces ant-contrib

我想获取.doc文件名并将其保存在下一个属性(pdf.name)中。使用regexp我想删除.doc文件名中的所有空格并将其转换为:

NAME FILE.doc

对此:

NAMEFILE.pdf

这是我的代码:

<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}" 
     regexp="\.*([[^/]+$^\.]*)\.doc" select="\1.pdf" casesensitive="true" />

2 个答案:

答案 0 :(得分:1)

如果@{remoteDocToPdf}仅包含文件名而不是绝对路径,则可以通过在发布的指令后添加此指令来删除文件名中的空格:

<propertyregex override="yes" property="pdf.name" input="${pdf.name}"
    regexp=" " replace="" global="true" />

无法删除空格并执行.doc - &gt;一次性.pdf转换,因为您只能指定selectreplace<propertyregex...

编辑1:我错过了向上面添加global="true",因此只会替换第一个空格(至少根据documentation)。

编辑2 关于您发布的<propertyregex...的说明 - 我很确定正则表达式\.*([[^/]+$^\.]*)\.doc并不是您想要的,即使它似乎按预期工作。根据您的评论,我猜您要做的只是将.doc替换为.pdf。在这种情况下,请改用:

<propertyregex override="yes" property="pdf.name" input="@{remoteDocToPdf}" 
    regexp="\.doc$" replace=".pdf" />

如果您想阅读正则表达式,我建议您阅读this tutorial

答案 1 :(得分:1)

您可以考虑使用Ant resources来执行此操作。这可能接近您的需求:

<loadresource property="pdf.name">
    <string value="${remoteDocToPdf}" />
    <filterchain>
        <deletecharacters chars=" " />
        <replaceregex pattern=".doc$" replace=".pdf" />
    </filterchain>
</loadresource>

工作由filterchain完成,由两个过滤器组成:一个删除空格,另一个更改文件扩展名。