2017-11-30 1 views
-1

Ich möchte eine Zeichenfolge in einer Datei mit Ant ersetzen. Zum Beispiel muss ich alle Dateien in einem Verzeichnis scannen die Zeichenfolge „CHANGEME“ gefunden und ich erreicht dies unter Code,So ersetzen Sie eine Zeichenfolge in einer Datei basierend auf einer Bedingung mit ant

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

Jetzt sollte die Zeichenfolge nicht ändert, wenn es keine Sonderzeichen wie "enthält ÄNDERE MICH?". Kann jemand vorschlagen, wie man diese Bedingung in replace_rexp ant Aufgabe behandelt?

Antwort

1

Dies kann mit dem Regex-Muster selbst erreicht werden. Sie müssen keine Bedingung in Ant erstellen.

Beachten Sie außerdem, dass das dir Attribut nicht von der replaceregexp Aufgabe unterstützt wird. Sie müssen eine geschachtelte Ressourcensammlung verwenden, wenn Sie die Ersetzung für mehrere Dateien ausführen möchten.

<replaceregexp match="CHANGEME(?!\p{P})" replace="XXX" flags="gi" byline="true"> 
    <fileset dir="C:/sample" includes="**/*" /> 
</replaceregexp> 

Erklärung der (?!\p{P}):

(?! ...) - Negative Look-Ahead. Das vorhergehende Muster ("CHANGEME") wird nur dann erfolgreich übereinstimmen, wenn das in diesen Klammern enthaltene Muster ihm nicht folgt.

\p{P} - Unicode-Kategorie für Interpunktionszeichen. Sie haben nicht genau angegeben, welche Zeichen als "Sonderzeichen" betrachtet werden sollten, aber dies sollte die meisten davon abdecken. Lassen Sie mich wissen, wenn Sie Ausreißer haben, und ich werde die Antwort entsprechend bearbeiten.

+0

Danke @ CAustin. Das ist was ich suche. Danke für die Lösung. Mein Szenario ist, wenn die zu ersetzende Zeichenfolge ein Fragezeichen (?) Nach der Zeichenfolge enthält, sollte es nicht ersetzt werden. – Jugi

Verwandte Themen