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

标签 regex r delimiter strsplit

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

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/

相关文章:

python - 如何在列表项python中保留分隔符

python - 如何将 csv.Sniffer 用于 2 种不同的 CSV 类型?

java - 关于java中split()的使用问题

java - 仅匹配一次出现的正则表达式

java - 正则表达式匹配整个单词或运算符

javascript - 匹配两个左括号

python - regEx:匹配两组字符

r - 如何从字符串中删除阿拉伯文本

r - 将字符元素添加到数值矩阵

r - 如何在 R 中绘制置信区间