我的问题可能不清楚,所以我将用简单的例子来解释我的问题.
例如,有一个字符x = "AAATTTGGAA"
.
我想要达到的是,从x
开始,用连续的字母,"AAA", "TTT", "GG", "AA"
,除以x
.
然后,每个区块的唯一字母是"A", "T", "G", "A"
,所以预期输出是ATGA
.
我该怎么得到这个?
我很抱歉,如果这是重复的,但我找不到关于这个问题.
我的问题可能不清楚,所以我将用简单的例子来解释我的问题.
例如,有一个字符x = "AAATTTGGAA"
.
我想要达到的是,从x
开始,用连续的字母,"AAA", "TTT", "GG", "AA"
,除以x
.
然后,每个区块的唯一字母是"A", "T", "G", "A"
,所以预期输出是ATGA
.
我该怎么得到这个?
我很抱歉,如果这是重复的,但我找不到关于这个问题.
下面是一个有用的正则表达式技巧方法:
x <- "AAATTTGGAA"
out <- strsplit(x, "(?<=(.))(?!\\1)", perl=TRUE)[[1]]
out
[1] "AAA" "TTT" "GG" "AA"
这里使用的正则表达式模式表示在前后字符不同的任何边界处拆分.
(?<=(.)) lookbehind and also capture preceding character in \1
(?!\\1) then lookahead and assert that following character is different