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

startString
bla bla bla
...
endString

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

如果替换文本为单行-则所有文本均正确,但是当文本为多行时-replaceregex不起作用。
我应该在代码中解决什么?

最佳答案

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

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

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

参见

有关ant ReplaceRegExp文档的更多信息。

08-05 11:35