在 Raku 中查找重复数字的优雅方法(née Perl 6)

msc*_*cha 7 regex raku

我试图在一个数字中找到一组重复的数字,例如12334555611变成(1 2 33 4 555 6 11).

这有效:

$n.comb(/ 0+ | 1+ | 2+ | 3+ | 4+ | 5+ | 6+ | 7+ | 8+ | 9+ /)
Run Code Online (Sandbox Code Playgroud)

但不是很优雅。

有一个更好的方法吗?

Wik*_*żew 5

您可以使用

$n.comb(/(.) $0*/)
Run Code Online (Sandbox Code Playgroud)

所述(.)创建了一个捕获组,并捕获任何焦炭引入第1组,则存在反向引用,以第1组即$0在Perl6正则表达式。的*量词零个或多个相同的炭的匹配作为第1组。

如果您只需要匹配重复的数字,请将.with替换\d为匹配任何数字。

在线查看Perl6 演示

  • @mscha“令我惊讶的是,它[`{}`]似乎没有必要”我在[**Rakudo的匹配变量“发布”**](https: //stackoverflow.com/questions/51408141/perl6-grammar-not-sure-about-some-syntax-in-an-example/51410261#51410261)可能有助于弄清楚原因。(也许从某种意义上说,有些人用泥巴来尝试清除痤疮,但我想我还是要发表评论。) (2认同)