如何在Ant中使用正则表达式替换xml标记之间的值?

时间:2014-11-24 12:48:00

标签: regex xml ant

我尝试使用Ant替换xml中的值。

我的xml文件:

<session-config>
    <session-timeout>60</session-timeout>
</session-config>

我想将60替换为20

在ant任务replaceregexp中使用以下regexp:

(?<=session-timeout>)[\S\s]*?(?=</session-timeout)


<target name="step1">
        <replaceregexp file="WEB-INF/web.xml"
                       byline="true"
                       match="((?<=session-timeout\>)[\S\s]*?(?=\<\/session-timeout))"
                       replace='20'/>
</target>

但是在执行后从蚂蚁那里得到了致命的错误:

[Fatal Error] The value of attribute "match" associated with an element type "replaceregexp"
 must not contain the '<' character.

请告知,如何更改我的正则表达式,或者可能还有另一个解决此问题的方法?感谢。

1 个答案:

答案 0 :(得分:4)

<>字符必须分别使用&lt;&gt;进行“转义”:

<replaceregexp file="WEB-INF/web.xml"
              byline="true"
              match="((?&lt;=session-timeout\&gt;)[\S\s]*?(?=\&lt;\/session-timeout))"
              replace='20'/>