2012-03-29 12 views
1

Ich versuche, einen regulären Ausdruck für eine Ant-Aufgabe zu schreiben, die Dateien in einem Verzeichnis ausschließt, die mit einer bestimmten Zeichenfolge enden. Zum Beispiel habe ich die folgenden drei Dateien:RegEx-Muster zum Ausschließen von Dateinamen mit bestimmter Zeichenfolge

file01.js 
file02.js 
file02-copy.js 

Ich möchte einen Ausdruck, der die ersten beiden Dateien und ignoriert die man mit „-Kopie“ am Ende findet. Ich habe versucht, <include> 's und <excludes>' s mit etwa so:

<fileset dir="." includes="js/"> 
    <include name="*.js"/> 
    <exclude name="*copy*"/> 
</fileset> 

aber offensichtlich, weil seine eine JS-Datei, die immer noch enthalten. Also versuche ich, einen regulären Ausdruck zu verwenden, um die Dateien zu passen (wenn jemand einen anderen Vorschlag hat bitte schlagen):

<fileset dir="." includes="js/"> 
    <containsregexp expression="..."> 
</fileset> 

Und hier liegt mein Problem. Ich kann kein regEx finden, das diese Übereinstimmung für mich tut. Ich habe ein paar Dinge wie (\w*)(!-copy).js versucht, aber das tut nichts. Wenn mir jemand helfen könnte, wäre ich sehr dankbar.

Habe ich schon erwähnt, dass ich es hasse, RegEx's zu schreiben?

+0

Nur so sind wir nicht das falsche Problem zu lösen, können Sie die Datei/Verzeichnisstruktur für Ihre Dateien skizzieren? Sind Ihre Datei * .js Dateien im "." Verzeichnis oder im Verzeichnis "js /"? – claesv

Antwort

2

Ich würde die include-Direktiven überspringen und nur Ausschluss-Direktiven für alles hinzufügen, was explizit ausgeschlossen ist. Andere Dateien werden dann implizit eingeschlossen.

Ich weiß nicht, was Ihr sucht Dateistruktur wie, so könnte ich über diese falsch sein, aber vielleicht würde dies den Trick:

<fileset dir="js" excludes="*copy*" /> 
+0

Das funktioniert perfekt, und ja, das ist die richtige Verzeichnisstruktur. Danke vielmals! – MeanwhileInHell

Verwandte Themen