2014-02-10 101 views
4

我有一個如下所示的字符串。R正則表達式

testSampe <- "Old:windows\r\nNew:linux\r\n" 

我要刪除":""\"之間的字符串。

像這樣"Old\r\nNew\r\n"

我該如何構建這個正則表達式?

我試圖用正則表達式gsub函數":.*\\\\",它不起作用。

gsub(":.*\\\\", "\\\\r", testSampe) 
+0

@nhahtdh,除非給出'perl = TRUE',否則返回''Old'''。 – falsetru

回答

4
> testSampe <- "Old:windows\r\nNew:linux\r\n" 
> gsub(":[^\r\n]*", "", testSampe) 
[1] "Old\r\nNew\r\n" 
+1

我認爲只應該保留第二個解決方案。 '\ S'將在空格之前停止(ASCII 32)。 – nhahtdh

+0

@nhahtdh,你說得對。根據你的評論我刪除了第一個。謝謝。 – falsetru

+0

감사합니다謝謝 – user2423434

2

你有幾個不同的正則表達式將匹配的選擇。見falsetru的答案或使用:

rx <- ":[[:alnum:]]*(?=\\r)" 

作爲一個更可讀的替代gsub,在stringr包中使用str_replace_all

library(stringr) 
str_replace_all(testSampe, perl(rx), "")