所以我在R中编辑一些字符串,我想从字符串中删除括号中的所有内容。问题是,我对正则表达式并不十分精明,而且似乎每次我想使用gsub来弄乱括号,它都不起作用,或者不能产生正确的结果。
任何提示?我感觉它是一个可以解决的问题。可能有一个我可以使用的功能不是gsub吗?
实施例。字符串:“abc def(foo)abc(def)”应该被剥离为“abc def abc”
如果要做到这一点的唯一方法是在括号中指定什么,那也没关系。
答案 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"