当分隔符撞上正则表达式
测试开头
测试结尾
今天是生信星球陪你的第404天
大神一句话,菜鸟跑半年。我不是大神,但我可以缩短你走弯路的半年~
就像歌儿唱的那样,如果你不知道该往哪儿走,就留在这学点生信好不好~
这里有豆豆和花花的学习历程,从新手到进阶,生信路上有你有我!
花花写于2019.6.30,成都。请本地的朋友们推荐一下,晚上去哪里玩好鸭?后台在线等
知识点
字符串按照某个分隔符进行拆分,使用的函数是stringr
里的str_split
。
if(!require(stringr))install.packages("stringr")
library(stringr)
例子
k <- "sdflk-ddd"
str_split(k,"-")
#[[1]]
#[1] "sdflk" "ddd"
问题
分隔符中有比较特殊的,例如.
x <- "sdflk.ddd"
现在的需求是:以点号为分隔符将上面的字符串分成两部分。
如果直接使用点号,得到的结果是不对的:
str_split(x,".")
[[1]]
[1] "" "" "" "" "" "" "" "" "" ""
解决方法
因为在正则表达式中,点号表示任意字符。
有两种方法可以正确分隔:
一种是将符号加上[ ]
,一种是将正则表达式的符号转义,即使其失去正则规定的功能。
str_split(x,"[.]")
str_split(x,"\.")
同理可得
星号 *
分隔也是一样的:
x <- "sdflk*ddd"
str_split(x,"*")
#Error in stri_split_regex(string, pattern, n = n, simplify = simplify, :
# Syntax error in regexp pattern. (U_REGEX_RULE_SYNTAX)
str_split(x,"\*")
#[[1]]
#[1] "sdflk" "ddd"
str_split(x,"[*]")
#[[1]]
#[1] "sdflk" "ddd"
向大家隆重推荐隔壁生信技能树的一系列干货!
点击底部的“阅读原文”,获得更好的阅读体验哦😻
初学生信,很荣幸带你迈出第一步。
我们是生信星球,一个不拽术语、通俗易懂的生信知识平台。由于是2018年新号,竟然没有留言功能。需要帮助或提出意见请后台留言、联系微信或发送邮件到jieandze1314@gmail.com,每一条都会看到的哦~
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!