2012-04-21 25 views
6

tôi cần thay thế chuỗi multiline trong tập tin, như thế này:kiến ​​replaceregex thay multiline

startString 
bla bla bla 
... 
endString 

bởi replaceregex kiến. đang Ant:

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

Nếu văn bản cho thay thế là đơn dòng - tất cả các công trình chính xác, nhưng khi văn bản là multiline - replaceregex không hoạt động. Tôi nên sửa lỗi gì trong mã của mình?

Trả lời

17

Có một số thay đổi bạn cần thực hiện. Có một vài cài đặt bạn đã đề xuất rằng mỗi dòng đầu vào phải được coi là dòng đầu vào riêng biệt là thuộc tính byline và cờ m. Trong sau tôi đã gỡ bỏ những người và cũng nói thêm cờ s mà đối xử với tập tin đầu vào một dòng đầu vào:

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

Cũng lưu ý việc bổ sung các ? trong regex, điều này làm cho các ký tự đại diện không tham lam trong trường hợp bạn có nhiều lần xuất hiện mà bạn muốn khớp.

Xem

Các tài liệu kiến ​​ReplaceRegExp để biết thêm.

+0

Xin cảm ơn, nó hữu ích cho tôi – Alexey