Find overlapping Regexp matches
问题 I want to find all matches within a given string including overlapping matches. How could I achieve it? # Example "a-b-c-d".???(/\w-\w/) # => ["a-b", "b-c", "c-d"] expected # Solution without overlapped results "a-b-c-d".scan(/\w-\w/) # => ["a-b", "c-d"], but "b-c" is missing 回答1: Use capturing inside a positive lookahead: "a-b-c-d".scan(/(?=(\w-\w))/).flatten # => ["a-b", "b-c", "c-d"] See Ruby demo 回答2: I suggest a non-regex solution: "a-b-c-d".delete('-').each_char.each_cons(2).map { |s| s