我想拆分此字符串中的几个子:如何在R中使用str_split()?
BAA33520.2 | /基因= “vpf402”/产品= “Vpf402” | GI:8272373 | AB012574 |加入{7347:7965, 0 :591}
分隔符是| (ascii 124)。
它适用于所有其他分隔符,但不适用于此分隔符。
我想拆分此字符串中的几个子:如何在R中使用str_split()?
BAA33520.2 | /基因= “vpf402”/产品= “Vpf402” | GI:8272373 | AB012574 |加入{7347:7965, 0 :591}
分隔符是| (ascii 124)。
它适用于所有其他分隔符,但不适用于此分隔符。
?regex
两个正则表达式可以由缀运算符
|
接合;结果正则表达式匹配任何匹配任一子表达式的字符串。例如,abba|cde
匹配字符串abba
或字符串cde
。请注意,交替在字符类中不起作用,其中|
具有字面意思。基本构建块是匹配单个字符的正则表达式。大多数字符(包括所有字母和数字)都是正则表达式,与自己匹配。任何具有特殊含义的元字符都可以在前面加一个反斜杠来引用。扩展正则表达式中的元字符是
. \ | () [ {^$ * + ?
,但请注意,这些是否具有特殊含义取决于上下文。
这样:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}', "\\|")
正如@Frank注意,您可以通过添加fixed=TRUE
为此在base::strsplit()
:
strsplit('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',"|", fixed=TRUE)
但是,您也可以通过装饰做到这一点与stringr::str_split()
分隔符的正则表达式:
stringr::str_split('BAA33520.2|/gene="vpf402",/product="Vpf402"|GI:8272373|AB012574|join{7347:7965, 0:591}',
regex("|", literal=TRUE))
顺便说一句,stringr
是非常简单,只是一个在这一点上略有友好的包装来stringi
功能,我强烈建议学习stringi
包,因为它包含字符串spiltting外一些精彩的宝石。
PS:分割函数根本不会分割该字符串,被用作分隔符。 – CLM
你尝试失败了什么? – hrbrmstr
你试过逃脱它吗?即'\\ |'' – aosmith