我想用ant替换文件中的字符串。例如,我需要扫描目录中的所有文件以匹配字符串" CHANGEME"我用下面的代码实现了这一点,
<replaceregexp dir="C:/sample" match='CHANGEME' replace='XXX' flags="gi" byline="true" />
现在,如果字符串包含任何特殊字符,例如&#34; CHANGEME?&#34;,则不应该更改字符串。任何人都可以建议如何在replaceregexp ant任务中处理这个条件吗?
答案 0 :(得分:1)
这可以通过正则表达式模式本身来完成。您无需在Ant中创建条件。
另请注意,dir
任务不支持replaceregexp
属性。如果要在多个文件上运行替换,则需要使用嵌套资源集合。
<replaceregexp match="CHANGEME(?!\p{P})" replace="XXX" flags="gi" byline="true">
<fileset dir="C:/sample" includes="**/*" />
</replaceregexp>
(?!\p{P})
的解释:
(?! ... )
- 否定前瞻。如果这些括号中包含的模式不遵循它,则上述模式(“CHANGEME”)将仅成功匹配。
\p{P}
- 标点字符的Unicode类别。您没有确切地指定哪些字符应被视为“特殊字符”,但这应涵盖其中的大部分。如果您有任何异常值,请告诉我,我会相应地编辑答案。