2
我有一些行,有些有括号,有些没有。像ABC(DEF)
和ABC
。我想从括号中提取信息:提取括号中的信息R
- ABC(DEF) - > DEF
- ABC - > NA
我写
gsub(".*\\((.*)\\).*", "\\1",X).
它的工作原理很好的ABC(DEF ),但在没有括号时输出“ABC”。
我有一些行,有些有括号,有些没有。像ABC(DEF)
和ABC
。我想从括号中提取信息:提取括号中的信息R
我写
gsub(".*\\((.*)\\).*", "\\1",X).
它的工作原理很好的ABC(DEF ),但在没有括号时输出“ABC”。
如果你不想在你的正则表达式中使用sub
时得到ABC
,你需要添加一个替代方案来匹配所有非空字符串并将其删除。
X <- c("ABC(DEF)", "ABC")
sub(".*(?:\\((.*)\\)).*|.*", "\\1",X)
^^^
查看IDEONE demo。
请注意,您不必使用gsub
,您只需要执行一次替换,因此sub
就可以。
此外,stringrstr_match
也适合完成这个任务:
str_match(X, "\\((.*)\\)")
或
str_match(X, "\\(([^()]*)\\)")
见http://ideone.com/pq2NmX –
您还可以使用stringr' str_match(X,“\\(([^()] *)\\)”)' –