2016-07-12 8 views
1

übereinstimmen Ich versuche, den Anfang und das Ende von Ausdrücken mit Grep-Befehl übereinstimmen, aber ich bin nicht in der Lage, das zu tun. Betrachten Sie zum Beispiel die folgenden Ausdrücke.Wie man den Anfang und das Ende eines Ausdrucks mit grep in R

filenames <- c("S2abc.6h", "S2abc.4h", "S2abc.0h","S4abc.6h","S2xyz.6h") 

Ich möchte alle Dateien finalisieren, beginnend mit S2 und endend mit 6h. Ich kann die Dateien auswählen, mit S2 beginnend mit:

grep("S2", filenames, value = TRUE) 

Aber ich bin nicht in der Lage, die Wildcards mit grep zu verwenden.

> grep("S2*6h", filenames, value = TRUE) 

character(0) 
+1

Es gibt keine Dateien, die mit 06 – Alex

Antwort

1

Ich denke, Ihr Ansatz grep zu verwenden, ist in Ordnung, können Sie nur den regulären Ausdruck etwas zwicken müssen Sie die Dateinamen übereinstimmen verwenden, um Sie wollen.

> matches <- grep("^S2.*\\.6h$", filenames, ignore.case = T) 
> matches 
[1] 1 5 
> filenames[matches] 
[1] "S2abc.6h" "S2xyz.6h" 

Die Regex I verwendet:

^S2.*\\.6h$ 

Dadurch werden alle Dateinamen übereinstimmen, die mit .6h

+0

ich für die Tippfehler entschuldigen zu beenden, ich meine Frage bearbeitet. – newbie

+0

Aber ich habe durch meine Suche gefunden, dass es mit perl = TRUE gemacht werden kann. – newbie

2

Sie ^ mit S2 beginnt und endet können Sie die Start- und $ zu bestimmen, die bestimmen Ende einer Zeichenfolge. Die .+ fängt alles dazwischen.

grep("^S2.+6h$", filenames, value = TRUE) 
# [1] "S2abc.6h" "S2xyz.6h" 
Verwandte Themen