Ant任务替换文本转义美元

时间:2013-12-02 12:35:32

标签: java regex ant

我想将unfiled$public替换为unfiled\$public,我正在使用以下ant任务 -

 <replaceregexp match="unfiled$public" replace="unfiled\$public" flags="gs" byline="false" >
        <fileset dir="my_dir" />
    </replaceregexp>

但这不是诀窍。我知道$必须逃脱。我也尝试了这个也没有结果 -

 <replaceregexp match="unfiled\\$public" replace="unfiled\\\\\$public" flags="gs" byline="false" >
        <fileset dir="my_dir" />
    </replaceregexp>

4 个答案:

答案 0 :(得分:0)

试试这段代码:

<replaceregexp match="unfiled$$public" replace="unfiled\$$public" flags="gs" byline="false" >
    <fileset dir="my_dir" />
</replaceregexp>

正如一些编制者所说的那样,使用双 $$ 来逃避 $ 。如果这不起作用,您可以尝试保持替换不受影响:replace="unfiled\$public"并且只能转义匹配

<replaceregexp match="unfiled\$public" replace="unfiled\&#36;public" flags="gs" byline="false" >
        <fileset dir="my_dir" />
    </replaceregexp>

答案 1 :(得分:0)

您(很可能)不需要双重转义反斜杠,因为它们在XML字符串中使用(具有其他转义规则,如&amp;等)。

所以试试:

<replaceregexp match="unfiled\$public" replace="unfiled\$public" flags="gs" byline="false" >
    <fileset dir="my_dir" />
</replaceregexp>

答案 2 :(得分:0)

尝试:

<replaceregexp match="unfiled$public" replace="unfiled\\$public" flags="gs" byline="false" >
            <fileset dir="my_dir" />
        </replaceregexp>

答案 3 :(得分:0)

在替换属性中,美元符号必须写为 \\\$,因为美元符号必须在正则表达式替换部分中转义,结果为 \$ 和 for Ant这两个字符必须再次转义:\\ + \$