2017-01-13 67 views
1

我確定這是重複的,但我找不到它。僅當[+]之間的[和]在[和]之間提取字符串

我到目前爲止發現的最接近的是:

Extract info inside all parenthesis in R

我想從字符串中提取與一個[開始,用]結束,有+加之間的任何比賽那些括號。我基於之前的回答提出的正則表達式有點過於貪婪。

library(magrittr) 

str <- "[a] , [a + b] + [b] , [b - q] , [d - e + f]" 

gregexpr(pattern = "(?=\\[).*?[+].*?(?<=\\])", 
     text = str, 
     perl = TRUE) %>% 
    regmatches(x = str, 
      m = .) 

這將返回

[[1]] 
[1] "[a] , [a + b]"    "[b] , [b - q] , [d - e + f]" 

在那裏我要的是

[[1]] 
[1] "[a + b]"    "[d - e + f]" 
+0

那你希望它像的情況下返回「[1 - [b + c]]「或」[a + [b - c]],[a]「? – LarsH

+0

我沒有想過嵌套,但Tot的答案足以滿足我需要禁止括號內的'+'。 – Benjamin

回答

2

如何:

\\[[^]+]+[+][^]]+\\] 
+0

確實如此。而且看起來不那麼嚇人。 – Benjamin

相關問題