2017-08-14 44 views
0

我有很多錯誤消息,我正在嘗試清理。gsub在一組字符後替換文本

一些錯誤結束與文本"(sec): 0.xxx" 我想要使用GSUB(秒)後,除去一切

data$Message <- gsub("(sec).*", "", data$Message, perl = TRUE) 

這一切返回後(

我知道這會很容易只是使用「:」或「)」,但它會影響其他我不想改變的錯誤。

有沒有辦法使用gsub來查看幾個字符 - 比如「(sec)」 - 而不是一個? 在相關說明上是他們的符號,表示與「。」類似的任何數字(不包括文本)?

回答

2

您可以使用正則表達式看看後面?<=避免sec被刪除,並在同一時間斷言去除的圖案如下sec,所以(?<=sec\\)).*sec)後刪除一切,但沒有sec)本身:

gsub("(?<=sec\\)).*", "", "(sec): 0.xxx", perl = TRUE) 
# [1] "(sec)" 
+0

工作!謝謝。對於其他人,我使用的確切代碼是。 tarf $ Message < - gsub(「(?<= sec \\))。*」,「」,tarf $ Message,perl = TRUE) – Coopa

0

你可以選擇表達式的第一部分(在括號之間)並省略其餘部分:

gsub('(^.*\\(sec\\)).*', '\\1', '(sec): 0.xxx') 

## [1] "(sec)"