library(stringr) txt <- "abc-1230-xyz-[def-ghu-jkl---]-[adsasa7asda12]-s-[klas-bst-asdas foo]" str_extract_all(txt, "\\[[^]]*\\]|[^-]+")
Standard input is empty
[[1]] [1] "abc" "1230" "xyz" [4] "[def-ghu-jkl---]" "[adsasa7asda12]" "s" [7] "[klas-bst-asdas foo]"