2016-11-24 6 views
2

Ich habe Zeichenfolge wie 'aa; a' 'aa;' und ich muss ';' (oder jedes andere Interpunktionszeichen) nur, wenn die Zeichenfolge damit endet. Wenn es damit beginnt oder es in der Mitte enthält, möchte ich es nicht löschen.R: gsub Interpunktionszeichen nur am Ende der Zeichenfolge

Die folgende Zeile führt zum Löschen des ';'

gsub("(^.*)[[:punct:]]","",'a;a') 
+0

Um die Dinge zu klären, wäre das Ergebnis von "a; a;" "aa", aber das Ergebnis von "a; a" wäre "a; a"? –

Antwort

4

Wir haben die metacharacter $ nach dem [[:punct:]] angeben kann das Ende der Zeichenfolge zu bedeuten, so passt es ein Satzzeichen am Ende der Zeichenfolge und ersetzen Sie es mit leeren ("")

sub("[[:punct:]]$","",c('a;a', 'aa;')) 
#[1] "a;a" "aa" 

Beachten Sie, dass anstelle von gsub (globale Ersetzung) sub verwendet wird, um nur für eine einzelne Instanz zu suchen und zu ersetzen.

Verwandte Themen