什么是ant正则表达式(regexp元素)模式中的转义字符

时间:2011-11-21 12:57:00

标签: regex string ant scripting

我有一个文本文件(f.txt),其内容应该是逐个文件列表(.c文件和其他文件),如下所示。


    first.c
    temp.c
    temp.txt
    a.txt
    second.c
    third.c

在这个文件中,我想只为.c个文件添加一些前缀和后缀。为此我写了下面的蚂蚁脚本。


    <replaceregexp byline="true" file="f.txt">
        <regexp pattern="(.+).c"/>
        <substitution expression="PRE \1.c POST"/>
    </replaceregexp>

它不适用于字符串second.c

预期输出


    PRE first.c POST
    PRE temp.c POST
    temp.txt
    a.txt
    PRE second.c POST
    PRE third.c POST

实际输出


    PRE first.c POST
    PRE temp.c POST
    temp.txt
    a.txt
    PRE s.c POSTond
    PRE third.c POST

它将.中的.c视为任何角色。但我保持它正好解析.c。我尝试在\之前使用.c也像<regexp pattern="(.+)\.c">一样。但这也没有用。

请为我提供一个获得预期输出的解决方案。

注意:我在windows xp中使用ant 1.7.0

2 个答案:

答案 0 :(得分:4)

你想要逃避.并且可能使用某种锚点,例如:

<regexp pattern="^(.+)\.c$"/>

^$表示行的开头和结尾。没有它们,foo.coo.txt之类的行会匹配。

答案 1 :(得分:0)

我认为你必须逃避两次,比如:

<regexp pattern="(.+)\\.c">