2017-01-18 5 views
1

Ich habe die folgenden Dateinamen in einem Ordner: 1_myfile.txt, 2_myfile.txt, 3_myfile.txt und 4_best_myfile.txt, 5_best_myfile.txt, 6_best_myfile.txt.Subset nach Mustern in Dateinamen

Ich möchte regex in pattern = "" beim Auflisten von Dateien mit list.files() verwenden, um Dateien mit "_myfile.txt" aus Dateien mit "_best_myfile.txt" zu unterteilen. Ich habe versucht, mit:

files = list.files ("" path = "* [^ best_myfile.txt] $")

Leider funktioniert es nicht, weil es Teilmengen nur Dateien, die nicht mit .txt enden.

Kann mir bitte jemand helfen?

Vielen Dank im Voraus

+0

Verwenden Sie "" \\ d + _best_myfile.txt "' ohne die '[]' – akrun

Antwort

1

Wir können die pattern zu "\\d+_best_myfile\\.txt"

files <- list.files("\\d+_best_myfile\\.txt") 

Es wird von einem _ und der Zeichenfolge best_myfile.txt gefolgt impliziert eine oder mehrere Zahlen (\\d+) ändern. Beachten Sie auch, dass einige Zeichen maskiert werden müssen, d. H. . ist ein Metazeichen und es enthält ein beliebiges Zeichen. Also, um das literale Punkt-Zeichen zu bekommen, müssen wir entkommen (\\) es

+0

Diese Arbeit sehr gut und vielen Dank dafür . Leider kann ich keine Dateien unterteilen, die nur myfile enthalten. – Bfu38

+0

@ Bfu38 Ich bin mir nicht sicher über Ihren zweiten Kommentar. Vielleicht "^ \\ d + _myfile \\. Txt $" 'ist das, was Sie wollten – akrun

+0

Entschuldigung Wenn ich nicht so klar war, aber wenn ich eine Teilmenge versuchte, konnte mein Code nicht zwischen" _myfile.txt "und" _best_myfile "unterscheiden .txt "das ist das Hauptziel meiner Versuche. – Bfu38