找到重叠的Regexp匹配项

ssc*_*eck 6 ruby regex overlap

我想找到给定字符串中的所有匹配项,包括重叠匹配项.我怎么能实现它?

# 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
Run Code Online (Sandbox Code Playgroud)

Wik*_*żew 7

在积极的前瞻中使用捕获:

"a-b-c-d".scan(/(?=(\w-\w))/).flatten
 # => ["a-b", "b-c", "c-d"]
Run Code Online (Sandbox Code Playgroud)

参见Ruby演示

  • ...或正面回顾:`"abcd".scan(/(?<=(\w-\w))/).flatten`。 (2认同)
  • 伙计们,`inspect`仅用于上面的代码片段**,在在线演示中打印出演示结果**.没有人告诉在实际代码中使用`inspect`.我将其删除以避免进一步混淆. (2认同)