2013-06-27 93 views
1

所以我在編輯R中的一些字符串,並且我想從字符串中刪除括號中的所有內容。問題是,我對正則表達式不太瞭解,並且似乎任何時候我想用gsub來弄亂括號,它都不起作用,或者不會產生正確的結果。R中的字符串編輯 - 帶圓括號的問題

任何提示?我有一種感覺它是一個可以解決的問題。可能有一個我可以使用的功能,不是gsub?

Ex。字符串:「abc def(foo)abc(def)」應該被剝離爲「abc def abc」

如果要做到這一點的唯一方法是在圓括號中指定什麼,那也可以。

+1

的你已經嘗試將增值到您問題的代碼示例 – krlmlr

回答

3

只是另一種方式:

x <- "abc def (foo) abc (def)" 
gsub(" *\\(.*?)", "", x) 

你需要躲避(\在正則表達式。在R中,你需要逃脫兩次\\。然後你搜索在非貪婪的方式(後什麼(.*),與.*?其次)(你沒有逃跑。

+0

一個很好的優雅的解決方案。 – riders994

2

括號通常是正則表達式中的特殊字符,也是R使用的字符。您必須用反斜槓\將它們轉義。麻煩的是,反斜槓需要R中的字符串進行轉義爲好,用另一個反斜槓,這導致了以下相當笨拙建設:

gsub(" *\\([^)]*\\) *", " ", "abc def (foo) abc (def)") 

小心用空格,這些都不是我的gsub調用正確處理。

+0

完美的作品 – riders994

2

qdap包中的bracketX功能設計對於這個問題:!

library(qdap) 
x <- "abc def (foo) abc (def)" 
bracketX(x, "round") 

## > bracketX(x, "round") 
## [1] "abc def abc" 
相關問題