6

次のように、ファイル内の複数行の文字列を置き換える必要があります。

startString
bla bla bla
...
endString

antreplaceregexによる。Antコード:

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

replaceのテキストが1行の場合(すべて正しく機能しますが、テキストが複数行の場合)、replaceregexは機能しません。コードで何を修正する必要がありますか?

4

1 に答える 1

20

いくつかの変更を行う必要があります。byline入力の各行を、属性とmフラグである入力の個別の行と見なす必要があることを示唆する設定がいくつかあります。s以下では、それらを削除し、入力ファイルを単一行の入力として扱うフラグも追加しました。

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

また?、正規表現に が追加されていることにも注意してください。これにより、一致させたい複数のオカレンスがある場合に、ワイルドカードが非貪欲になります。

見る

詳細については、 ant のReplaceRegExpドキュメントを参照してください。

于 2012-04-21T07:31:03.210 に答える