Regex 在R中的括号内提取信息

Regex 在R中的括号内提取信息,regex,r,gsub,Regex,R,Gsub,我有一些行,一些有括号,一些没有。例如ABC(DEF)和ABC。我想从括号中提取信息: ABC(DEF)->DEF ABC->NA 我写 gsub(".*\\((.*)\\).*", "\\1",X). 它适用于ABC(DEF),但在没有括号时输出“ABC”。如果在正则表达式中使用sub时不想获得ABC,则需要添加一个与所有非空字符串匹配的替代项并将其删除 X <- c("ABC(DEF)", "ABC") sub(".*(?:\\((.*)\\)).*|.*", "\\1",X)

我有一些行,一些有括号,一些没有。例如
ABC(DEF)
ABC
。我想从括号中提取信息:

  • ABC(DEF)->DEF
  • ABC->NA
我写

gsub(".*\\((.*)\\).*", "\\1",X).

它适用于ABC(DEF),但在没有括号时输出“ABC”。

如果在正则表达式中使用
sub
时不想获得
ABC
,则需要添加一个与所有非空字符串匹配的替代项并将其删除

X <- c("ABC(DEF)", "ABC")
sub(".*(?:\\((.*)\\)).*|.*", "\\1",X)
                       ^^^


请参见,您也可以使用stringr
stru匹配(X,“\\([^()]*)\\)”
str_match(X, "\\((.*)\\)")
str_match(X, "\\(([^()]*)\\)")