我正在尝试从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 ')''
答案 0 :(得分:51)
答案 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)
这导致结果“日志”