R中的字符串编辑 - 括号中的问题

时间:2013-06-27 07:09:06

标签: regex string r

所以我在R中编辑一些字符串,我想从字符串中删除括号中的所有内容。问题是,我对正则表达式并不十分精明,而且似乎每次我想使用gsub来弄乱括号,它都不起作用,或者不能产生正确的结果。

任何提示?我感觉它是一个可以解决的问题。可能有一个我可以使用的功能不是gsub吗?

实施例。字符串:“abc def(foo)abc(def)”应该被剥离为“abc def abc”

如果要做到这一点的唯一方法是在括号中指定什么,那也没关系。

3 个答案:

答案 0 :(得分:3)

另一种方式:

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

您需要在正则表达式中使用(转义\。在R中,您需要转义两次\\。然后你以非贪婪的方式在.*之后搜索任何内容((),?之后.*后跟)(你就是{{1}}不必逃避。

答案 1 :(得分:2)

括号通常是正则表达式中的特殊字符,也是R使用的括号。您必须使用反斜杠\来转义它们。麻烦的是,反斜杠也需要在R字符串中进行转义,并使用第二个反斜杠,这会导致以下相当笨拙的构造:

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

请注意空格,我的gsub电话无法正确处理这些内容。

答案 2 :(得分:2)

qdap包中的bracketX函数是针对此问题设计的:

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

## > bracketX(x, "round")
## [1] "abc def abc"