我有一个如下所示的字符串:
x <- "01(01)121210(01)0001"
我想将其拆分为一个向量,以便得到以下结果:
[1] "0" "1" "(01)" "1" "2" "1" "2" "1" "0" "(01)" "0" "0" "0" "1"
(|) 可以是 [|] 或 {|},括号之间的位数可以是 2 位或更多。
我一直试图通过首先在括号上分开来做到这一点:
unlist(strsplit(x, "(?<=[\\]\\)\\}])", perl=T))
[1] "01(01)" "121210(01)" "0001"
or unlist(strsplit(x, "(?<=[\\[\\(\\{])", perl=T))
[1] "01(" "01)121210(" "01)0001"
但我找不到将两者结合在一起的方法。
然后,我希望拆分不包含括号的元素。
如果有人可以帮助我解决这个问题或知道一种更优雅的方法来做到这一点,我将不胜感激。
非常感谢!
最佳答案
只需将 PERL 选项更改为 TRUE 并根据以下模式拆分输入字符串。
(?<!\(|^)(?!\)|\d\)|$)
DEMO
R 正则表达式将是,
"(?<!\\(|^)(?!\\)|\\d\\)|$)"
关于regex - R strsplit之前(和之后)保留两个分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25160197/