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,「\\(([^()] *)\\)」)' –