1

我正在努力实现:

'abc'.scan(regex) #=> ['a', 'b', 'c', 'ab', 'bc', 'abc']

可以这样做:

(1..'abc'.size).map {|l| 'abc'.scan /(?=(\w{#{l}}))/}.flatten
#=> ["a", "b", "c", "ab", "bc", "abc"]

但我想用一个正则表达式来做到这一点。

4

1 回答 1

3

没有正则表达式怎么办?:

string = 'abc'
p (1..string.size).flat_map { |e| string.chars.each_cons(e).map(&:join) }
# ["a", "b", "c", "ab", "bc", "abc"]
于 2018-01-23T17:21:45.443 回答