我有一些行,有些有括号,有些没有。与ABC(DEF)
和ABC
一样。我想从括号中提取信息:
我写了
gsub(".*\\((.*)\\).*", "\\1",X).
它适用于ABC(DEF),但输出" ABC"当没有括号时。
答案 0 :(得分:0)
如果您在使用正则表达式ABC
时不想获得sub
,则需要添加一个与所有非空字符串匹配的替代字符并将其删除。
X <- c("ABC(DEF)", "ABC")
sub(".*(?:\\((.*)\\)).*|.*", "\\1",X)
^^^
请参阅IDEONE demo。
请注意,您不必使用gsub
,只需要执行一次替换即可,sub
即可。
此外, stringr str_match
对于此任务也很方便:
str_match(X, "\\((.*)\\)")
或
str_match(X, "\\(([^()]*)\\)")