使用正则表达式重叠字符串匹配

时间:2014-03-02 07:16:06

标签: ruby regex

想象一下,我们有一些字符串形式的字母序列,称之为

str = "gcggcataa"

正则表达式

r = /(...)/

匹配任意三个字符,当我执行代码时

str.scan(r)

我得到以下输出:

["gcg", "gca", "taa"]

但是,如果我想扫描而不是如上所述的不同的非重叠字符串,而是希望获得此输出,那该怎么办:

["gcg", "cgg", "ggc", "gca", "cat", "ata", "taa"]

正则表达式允许这样做?

我知道我可以通过循环执行此操作,但我不想这样做

1 个答案:

答案 0 :(得分:1)

str = "gcggcataa"
str.chars.each_cons(3).map(&:join) # => ["gcg", "cgg", "ggc", "gca", "cat", "ata", "taa"]