2017-11-30 13 views
-1

antでファイル内の文字列を置換したいとします。例えば、私は、文字列「はchangeme」に一致するディレクトリ内のすべてのファイルをスキャンする必要があると私は、この「それは次のように特殊文字が含まれている場合今すぐ文字列は変更すべきではないantを使用した条件に基づいてファイル内の文字列を置き換える方法

<replaceregexp dir="C:/sample" match='CHANGEME' replace='XXX' flags="gi" byline="true" /> 

、コードの下に使用して達成しましたCHANGEME? "誰もreplaceregexp antタスクでこの状態を処理する方法を提案できますか?

答えて

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カテゴリ。 「特殊文字」と見なされる文字を正確に指定していませんでしたが、ほとんどの文字をカバーする必要があります。異常値があれば教えてください。それに応じて回答を編集します。

+0

ありがとう@CAustin。これは私が探しているものです。ソリューションに感謝します。私のシナリオは、置き換えられる文字列が文字列の後に疑問符(?)を含む場合、置き換えられないはずです。 – Jugi

関連する問題