I need replace multiline string in file, like this:
startString
bla bla bla
...
endString
by ant replaceregex. Ant code:
<copy file="${file}" tofile="${newFile}" overwrite="true">
<filterchain>
<replaceregex pattern="startString(.+)endString" replace="zzz" flags="gmi" byline="true"/>
</filterchain>
</copy>
If text for replace is Single line - all works correct, but when text is multiline - replaceregex doesn't work. What I should fix in my code?
There are a couple of changes you need to do. There are a couple of settings you had suggesting that each line of input should be considered a separate line of input which are the byline
attribute and the m
flag. In the following I have removed those and also added the s
flag which treats the input file a single line of input:
<replaceregex pattern="startString(.+?)endString" replace="zzz"
flags="gis" byline="false"/>
Also note the addition of the ?
in the regex, this makes the wildcard non greedy in case you have multiple occurrences you want to match.
See
The ant ReplaceRegExp documentation for more.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With