2012-04-21 9 views
6

Necesito reemplazar cadena de varias de archivo, así:replaceregex hormiga reemplazar multilínea

startString 
bla bla bla 
... 
endString 

por replaceregex hormiga. código Ant:

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

Si el texto para reemplazar es una sola línea - todas las obras correctas, pero cuando el texto es multilínea - replaceregex no funciona. ¿Qué debo corregir en mi código?

Respuesta

17

Hay un par de cambios que debe hacer. Hay un par de configuraciones que sugería que cada línea de entrada se debe considerar como una línea de entrada separada que son el atributo byline y el indicador m. En el siguiente He quitado aquellos y también añadido la bandera s que trata el archivo de entrada de una sola línea de entrada:

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

También tenga en cuenta la adición de la ? en la expresión regular, esto hace que el comodín no codiciosos en caso tienes múltiples ocurrencias que deseas unir

Ver

La documentación hormiga ReplaceRegExp por más.

+0

Gracias, es útil para mí – Alexey