如何使用ant根据条件替换文件中的字符串
我想用ant替换文件中的字符串。例如,我需要扫描目录中的所有文件以匹配字符串“CHANGEME”,我使用下面的代码实现了这一点如何使用ant根据条件替换文件中的字符串,ant,Ant,我想用ant替换文件中的字符串。例如,我需要扫描目录中的所有文件以匹配字符串“CHANGEME”,我使用下面的代码实现了这一点 <replaceregexp dir="C:/sample" match='CHANGEME' replace='XXX' flags="gi" byline="true" /> 现在,如果字符串包含任何特殊字符(如“CHANGEME?”),则不应更改该字符串。有人能建议如何在replaceregexp ant任务中处理这种情况吗?这可以通过regex
<replaceregexp dir="C:/sample" match='CHANGEME' replace='XXX' flags="gi" byline="true" />
现在,如果字符串包含任何特殊字符(如“CHANGEME?”),则不应更改该字符串。有人能建议如何在replaceregexp ant任务中处理这种情况吗?这可以通过regex模式本身来完成。您不需要在Ant中创建条件 另外,请注意,
replaceregexp
任务不支持dir
属性。如果要在多个文件上运行替换,则需要使用嵌套的资源集合
<replaceregexp match="CHANGEME(?!\p{P})" replace="XXX" flags="gi" byline="true">
<fileset dir="C:/sample" includes="**/*" />
</replaceregexp>
解释(?!\p{p})
:
(?!…)
-消极前瞻。前面的模式(“CHANGEME”)只有在这些括号中包含的模式不在后面时才会成功匹配
\p{p}
-标点符号的Unicode类别。您没有明确指定哪些字符应被视为“特殊字符”,但这应该涵盖其中的大多数字符。如果您有任何异常值,请告诉我,我将相应地编辑答案。这可以通过正则表达式模式本身来完成。您不需要在Ant中创建条件
另外,请注意,replaceregexp
任务不支持dir
属性。如果要在多个文件上运行替换,则需要使用嵌套的资源集合
<replaceregexp match="CHANGEME(?!\p{P})" replace="XXX" flags="gi" byline="true">
<fileset dir="C:/sample" includes="**/*" />
</replaceregexp>
解释(?!\p{p})
:
(?!…)
-消极前瞻。前面的模式(“CHANGEME”)只有在这些括号中包含的模式不在后面时才会成功匹配
\p{p}
-标点符号的Unicode类别。您没有明确指定哪些字符应被视为“特殊字符”,但这应该涵盖其中的大多数字符。如果您有任何异常值,请告诉我,我将相应地编辑答案。谢谢@CAustin。这就是我要找的。谢谢你的解决方案。我的假设是,如果要替换的字符串后面包含问号(?),则不应替换。谢谢@CAustin。这就是我要找的。谢谢你的解决方案。我的情况是,如果要替换的字符串后面包含问号(?),则不应替换该字符串。