2012-04-21 14 views
6

muszę zastąpić ciąg wielowierszowego w pliku, na przykład:mrówka replaceregex zastąpić multilinii

startString 
bla bla bla 
... 
endString 

przez ant replaceregex. kod Ant:

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

Jeśli tekst do zastąpienia jest Single Line - wszystkie prace poprawne, ale gdy tekst jest multiline - replaceregex nie działa. Co powinienem poprawić w moim kodzie?

Odpowiedz

17

Istnieje kilka zmian, które należy wykonać. Istnieje kilka ustawień sugerujących, że każda linia wejściowa powinna być traktowana jako osobna linia wejściowa, którą jest atrybut byline i flaga m. W następujących usunąłem te, a także dodać flagę s który traktuje plik wejściowy pojedynczej linii wejściowych:

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

Należy również zwrócić uwagę na dodanie ? w regex, to sprawia, że ​​wieloznaczny non zachłanny w przypadku masz wiele wystąpień, które chcesz dopasować.

Zobacz

Dokumentacja mrówka ReplaceRegExp więcej.

+0

Dzięki, dla mnie pomocne – Alexey

Powiązane problemy