R strsplit之前(和之后)保留两个分隔符

mam*_*649 5 regex r delimiter strsplit

我有一个如下所示的字符串:

x <- "01(01)121210(01)0001"
Run Code Online (Sandbox Code Playgroud)

我想将其分成一个向量,以便得到以下内容:

[1] "0" "1" "(01)" "1" "2" "1" "2" "1" "0" "(01)" "0" "0" "0" "1"
Run Code Online (Sandbox Code Playgroud)

(|) 可以是 [|] 或 {|},括号之间的位数可以是 2 个或更多。

我一直试图通过首先在括号上分隔来做到这一点:

unlist(strsplit(x, "(?<=[\\]\\)\\}])", perl=T))
[1] "01(01)" "121210(01)" "0001"

or unlist(strsplit(x, "(?<=[\\[\\(\\{])", perl=T))
[1] "01(" "01)121210(" "01)0001"
Run Code Online (Sandbox Code Playgroud)

但我找不到将两者结合在一起的方法。然后,我希望拆分不包含括号的元素。

如果有人可以帮助我解决这个问题或者知道更优雅的方法来做到这一点,我将非常感激。

非常感谢!

Mat*_*rde 3

这是另一种方式:

unlist(strsplit(x, '\\([^)]*\\)(*SKIP)(*F)|(?=)', perl=T))
# [1] "0"    "1"    "(01)" "1"    "2"    "1"    "2"    "1"    "0"    "(01)" "0"    "0"    "0"    "1" 
Run Code Online (Sandbox Code Playgroud)

\\([^)]*\\)匹配括号中的任何内容,并且(*SKIP)(*F)告诉正则表达式引擎在此模式上失败,如果它在字符串中找到该模式,则不要使用 另一侧的替代模式重新测试字符串的该部分|。另一侧的模式|(?=),这与字符之间的空格相匹配。