从字符串中删除括号

时间:2012-02-26 00:34:24

标签: string r grep substring

我正在尝试从R中的字符串中删除一个括号,并遇到以下错误:

string <- "log(M)"
gsub("log", "", string) # Works just fine
gsub("log(", "", string) #breaks
# Error in gsub("log(", "", test) : 
#   invalid regular expression 'log(', reason 'Missing ')''

3 个答案:

答案 0 :(得分:51)

使用双反斜杠转义括号:

gsub("log\\(", "", string)

(强制性:http://xkcd.com/234/

答案 1 :(得分:13)

Ben的答案为您提供了良好的普遍适用的方式。

或者,在您的情况下,您可以使用fixed=TRUE参数,如下所示:

gsub("log(", "", string, fixed=TRUE)
# [1] "M)"

只要pattern gsub()参数是包含您要搜索的字符序列的字符串,它就是合适的。然后,它很好,因为它允许您键入您正在搜索的确切模式,而无需转义等。

答案 2 :(得分:0)

如果您不是正则表达式专家(我们中的许多人不是!),我发现将不需要的文本的删除和括号分开会更直接,前提是您的查询支持这一点。

问题似乎表明只想删除括号,因此您可以使用:

gsub(paste(c("[(]", "[)]"), collapse = "|"), "", string)

这导致没有括号的字符串:“logM”

如果您还想删除“M”

gsub(paste(c("M", "[(]", "[)]"), collapse = "|"), "", string)

这导致结果“日志”