【发布时间】:2018-01-22 14:38:57
【问题描述】:
我的字符串很长:
my_string = "GTCAGTCGATCTGGGCATTATGCGTCAAAAGGCTGCTAGCTAAAGCTGATCAGCATCAAAAGGCCGCCCCTATGCTACGAGCATCATGCATCTGGGTCTAGCTAGTGGGCATTCTCTCTGCTGCATTCAGTCACAAAAGGTGTCAGTCGTAGTCATCATCTACATCGTTCATGCTGGGCATTACAGTCAGTCACAAAAGGTCAGTCAGTCA"
我想从这个字符串中提取两件事:
- 所有“之前”第一次遇到 CAAAAG
- 所有“之后”最后遇到 TGGGCATT
CAAAAG 之前的所有内容都可以这样找到:
stringr::word(my_string, 1, sep = "CAAAAG")
但是我如何确保它是字符串中的“第一个”CAAAAG?我收到了在第一个 CAAAAG 之前发现的所有字符?
TGGGCAT 也是如此。我可以通过这种方式在 TGGGCATT 之后收到所有内容:
stringr::word(my_string, -1, sep = "TGGGCATT")
但是如何确保所有字符都出现在字符串中的 LAST TGGGCATT“之后”?
【问题讨论】:
-
你说的确保是什么意思?您可以获得
CAAAAG的第一个索引,然后是从0 开始的子字符串,长度为N,其中N 是CAAAAG的索引。也为了在TGGGCATT之后获取东西,获取它的最后一个索引,来自N的子字符串,长度为L - 1 - (N + l),其中N是索引,l是单词的长度,L是字符串的长度。 -
不能直接拆分字符串吗?
-
我不知道 R 但获取字符串的第一个索引和最后一个索引是常用的方法。如果字符串不包含您要查找的单词,它们还会返回
-1。
标签: r pattern-matching stringr stringi