首页 > 解决方案 > 如何根据给定字符的一次或多次出现来拆分字符串?

问题描述

给定字符串:

string <- "AATTGGCGCTAG---AT-TTACG----"

如何根据一个或多个“-”的出现将其拆分为字符串。例如:

string1 <- "AATTGGCGCTAG"
string2 <- "---"
string3 <- "AT"
string4 <- "-"
string5 <- "TTACG"
string6 <- "----"

我努力了:

strsplit(string, "[-]+")

但是,这不会返回“-”的刺痛

标签: rregexstring

解决方案


您可以将它们与

[^-]+|-+

请参阅正则表达式演示。它匹配

  • [^-]+- 1+ 字符以外-
  • |- 或者
  • -+- 1 个或多个-字符。

在 R 中:

x <- "AATTGGCGCTAG---AT-TTACG----"
regmatches(x, gregexpr("[^-]+|-+", x))

或者

library(stringr)
x <- "AATTGGCGCTAG---AT-TTACG----"
str_extract_all(x, "[^-]+|-+")

输出

## => [[1]]
##    [1] "AATTGGCGCTAG" "---"   "AT"  "-"   "TTACG"   "----"

推荐阅读