ant replaceregex取代多线

时间:2012-04-21 06:31:59

标签: ant

我需要在文件中替换多行字符串,如下所示:

startString
bla bla bla
...
endString

by ant replaceregex。 Ant代码:

    <copy file="${file}" tofile="${newFile}" overwrite="true">
        <filterchain>
            <replaceregex pattern="startString(.+)endString" replace="zzz" flags="gmi" byline="true"/>
        </filterchain>      
    </copy>

如果替换的文本是单行 - 一切正常,但是当文本是多行时 - replaceregex不起作用。 我应该在代码中修复什么?

1 个答案:

答案 0 :(得分:19)

您需要做一些更改。您有几个设置建议每行输入应被视为一个单独的输入行,即byline属性和m标志。在下面我删除了这些并添加了s标志,该标志将输入文件视为一行输入:

<replaceregex pattern="startString(.+?)endString" replace="zzz"
    flags="gis" byline="false"/>

另请注意在正则表达式中添加了?,这使得通配符非贪婪,以防您想要匹配多个匹配项。

查看

ant ReplaceRegExp文档了解更多信息。