在R中用未转义的分隔符拆分字符串

asi*_*ira 4 regex r

我必须用R读取一个文件,其中可变数量的列由|字符分隔.但是,如果它前面有一个\它不应该被视为分隔符.

我首先想到的东西strsplit(x, "[^\\][|]")会起作用,但这里的问题是每个管道前的字符都被"消耗"了:

> strsplit("word1|word2|word3\\|aha!|word4", "[^\\][|]")
[[1]]
[1] "word"        "word"        "word3\\|aha" "word4" 
Run Code Online (Sandbox Code Playgroud)

有谁能建议这样做的方法?理想情况下,它应该被矢量化,因为有问题的文件非常大.

Tyl*_*ker 5

我相信这有效; 使用Anirudh的downvoted答案(不确定为什么downvote,它不起作用,但正则表达式是正确的)

strsplit(x, "(?<!\\\\)[|]", perl=TRUE)

## > strsplit(x, "(?<!\\\\)[|]", perl=TRUE)
## [[1]]
## [1] "word1"        "word2"        "word3\\|aha!" "word4" 
Run Code Online (Sandbox Code Playgroud)