Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 使用正则表达式的重叠字符串匹配_Ruby_Regex - Fatal编程技术网

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

Ruby 使用正则表达式的重叠字符串匹配,ruby,regex,Ruby,Regex,假设我们有一些字符串形式的字母序列,称之为 str = "gcggcataa" 正则表达式 r = /(...)/ 匹配任意三个字符,当我执行代码时 str.scan(r) 我得到以下输出: ["gcg", "gca", "taa"] 但是,如果我想扫描,而不是像上面那样扫描不同的、不重叠的字符串,而是想得到这个输出,该怎么办 ["gcg", "cgg", "ggc", "gca", "cat", "ata", "taa"] 什么正则表达式允许这种情况 我知道我可以通过循环来实现这一点

假设我们有一些字符串形式的字母序列,称之为

str = "gcggcataa"
正则表达式

r = /(...)/
匹配任意三个字符,当我执行代码时

str.scan(r)
我得到以下输出:

["gcg", "gca", "taa"]
但是,如果我想扫描,而不是像上面那样扫描不同的、不重叠的字符串,而是想得到这个输出,该怎么办

["gcg", "cgg", "ggc", "gca", "cat", "ata", "taa"]
什么正则表达式允许这种情况


我知道我可以通过循环来实现这一点,但我不想这样做

如果你意识到有些东西是不相关的,那么就不要把它放在问题中。这对这个问题的读者来说是额外的负担。这是一个编程网站,不是一个生物网站。不确定Ruby是否支持Lookaheads,但是/(?=(…)//应该可以工作(这个语法在.NET中可以工作,从其他帖子来看,它也应该在Ruby中工作)
str = "gcggcataa"
str.chars.each_cons(3).map(&:join) # => ["gcg", "cgg", "ggc", "gca", "cat", "ata", "taa"]