我需要替换文件中的多行字符串,如下所示:
startString
bla bla bla
...
endString
由蚂蚁替换正则表达式。蚂蚁代码:
<copy file="${file}" tofile="${newFile}" overwrite="true">
<filterchain>
<replaceregex pattern="startString(.+)endString" replace="zzz" flags="gmi" byline="true"/>
</filterchain>
</copy>
如果要替换的文本是单行 - 一切都正确,但是当文本是多行时 - 替换正则表达式不起作用。我应该在代码中修复什么?
您需要进行一些更改。 您有几个设置建议将每行输入视为单独的输入行,即byline
属性和m
标志。 在下文中,我删除了这些内容,并添加了将输入文件视为单行输入的 s
标志:
<replaceregex pattern="startString(.+?)endString" replace="zzz"
flags="gis" byline="false"/>
另请注意在正则表达式中添加了?
,这使得通配符不贪婪,以防您要匹配多个匹配项。
看
ant ReplaceRegExp 文档了解更多信息。