2014-02-05 9 views
6

Ich habe die folgende Zeichenfolge in dem Objekt gespeichert sentence:entfernen Urls von Strings

sentence <- "aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013 http://t.co/tkuCRfLy \" $AAPL vs $AAPL \" August 2011 http://t.co/863HkVjn" 

Ich versuche gsub zu verwenden, URLs mit http beginnen zu entfernen:

sentence <- gsub('http.*','',sentence)

jedoch es ersetzt alles nach http:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013

Was ich will, ist:

aazdlubtirol: RT @tradeDayTrades: sister articles \"$AAPL Dancing in a Burning Room\" January 2013 \" $AAPL vs $AAPL \" August 2011

Ich versuche, die Urls zu bereinigen, so dass, wenn ein String http enthält ich die URL entfernen möchten. Ich habe einige Lösungen gefunden, aber sie helfen mir nicht.

+1

einen Raum zu Ihrem Ersatz Gruppe hinzufügen: (‚http *‘, ‚‘, Satz) 'gsub '. – Justin

+0

@Justin große Antwort Ich versuchte 'Gsub ('http. * \\ s', '', Satz)' aber es funktioniert nicht. Vielleicht könnten Sie Ihre als Antwort hinzufügen. –

+0

Ich finde es seltsam, dass '\\ s' nicht funktionieren würde, wo ein einzelner Raum ist. – jbaums

Antwort

8

einen Raum zu Ihrer Ersatz Gruppe hinzufügen:

gsub('http.* *', '', sentence) 

Oder \\s verwendet, die Regex für Raum:

gsub('http.*\\s*', '', sentence) 

Gemäß dem Kommentar wird .* alles akzeptiert und reguläre Ausdrücke sind gierig. Stattdessen sollten wir ein oder mehr Nicht-Leerzeichen beliebig oft durch Null oder mehrere Leerzeichen gefolgt entsprechen:

gsub('http\\S+\\s*', '', sentence) 
+2

Beachten Sie, dass '. *' Auch Leerzeichen entspricht ... wenn Sie null oder mehr Nicht-Leerzeichen, gefolgt von Null- oder Modus-Leerzeichen, haben wollen, müssen Sie wirklich benutze: 'gsub ('http \\ S * \\ s *', '', Satz)' – jbaums

+0

Versuchte es: Satz [1] "traderclubtirol: RT AnniDayTrades: Schwesterartikel \" $ AAPL Tanzen in einen brennenden Raum \ "Januar 2013 http://t.co/tkuCRfLy \" $ AAPL vs $ AAPL \ "August 2011 http://t.co/863HkVjn" > Satz = gsub ('http. * \\ s *', ' ‘Satz) > Satz [1] "traderclubtirol: RT AnniDayTrades: Schwester Artikel \" Dancing $ AAPL in einem brennenden Raum \ "Januar 2013" > > aber es löscht alles nach dem ersten url – Aniks

+0

@Justin: Sie können geh einen Schritt f Weiter und Übereinstimmung URLs am Ende der Zeichenfolge mit 'gsub ('http \\ S + \\ s * | http \\ S + $', '', Satz)' – jbaums

Verwandte Themen