Ant内置任务之replaceregexp

一、概述

        replaceregexp是ant内置任务,是一个基于目录的,用于将选择的一个或一组文件中给定正则表达式替换为替代的模式。当输出文件与存在的文件不同时才会写入。防止任务进行基于未更改文件的伪重建。与regexpmapper类似,需要一个支持的正则表达式库与org.apache.tools.ant.util.regexp.Regexp实现。

二、属性

        file:要替换正则表达式的文件。可以通过嵌套fileset指定。
        match:要在文件中进行匹配的正则表达式。可以通过嵌套regexp指定。
        replace:在文件中替换正则表达式的替换模式。可以通过嵌套substitution指定。
        flags:匹配正则表达式时使用的标记。支持的值有:g(全局替换,替换所有匹配项)、i(匹配时不区分大小写)、m(多行模式,将字符串看作是多行输入,使用“^”和“$”做为任一行的开始和结束,而不是字符串的开始和结束)、s(单行模式、将字符串看作是单行输入,此模式下“.”可以匹配换行符)。
        byline:若为true,处理文件时每次处理一行,并且每次都进行替换。若为false,则每个文件只进行一次替换。当flags包含g时,此属性无效。默认为false。
        encoding:ant1.6起,文件编码。默认为JVM编码。
        preserveLastModified:ant1.8起,文件修改时是否保留文件时间戳。默认为false。

三、简单示例

        测试文件test.txt内容为:
abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
<project>
        <!-- 两种写法等效 -->
        <!-- <replaceregexp file="test.txt" byline="true" match="(.{6})ghi" replace="\1GHI" /> -->
        <replaceregexp byline="true">
                <regexp pattern="(.{6})ghi"/>
                <substitution expression="\1GHI"/>
                <fileset dir=".">
                        <include name="test.txt"/>
                </fileset>
        </replaceregexp>
</project>
        因byline设置为true,并且flags不包含g,所以运行结果为:
abcdefGHIjklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefGHIjklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefGHIjklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
        若byline设置为false,并且flags不包含g,所以运行结果为:
abcdefGHIjklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890
abcdefghijklmnopqrstuvwxyz1234567890abcdefghijklmnopqrstuvwxyz1234567890

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值