regex - perl6 中的变量量词

标签 regex raku

假设我想匹配至少有 4 个字母的单词(并将它们存储在一个数组中),我编写了以下正则表达式,效果很好:

if ( $text ~~ m:g/(\w ** 4..*)/ )
{
  my @words = $/;
  ... 
}

量词从 4 到无限制
**4..*

现在,如果我尝试用标量 $min_length 替换 4。两个都:
if ($text ~~ m:g/(\w ** $::min_length..*)/)

和:
if ($text ~~ m:g/(\w ** <$::min_length>..*)/)

导致编译出错:
量词什么都不量化

有没有办法将标量作为量词?

最佳答案

我想使用 .split.grep 一起使用更自然:

my $text = "The quick brown fox jumps over the lazy dog.";
my $min-length = 4;
say $text.split(/\W+/).grep(*.chars >= $min-length);
===============
(quick brown jumps over lazy)

如果您将单词定义为空格之间的字符,您甚至可以使用 .words方法:
say $text.words.grep(*.chars >= $min-length);
===============
(quick brown jumps over lazy dog.)

关于regex - perl6 中的变量量词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44347724/

相关文章:

c# - 可以在字符类中使用.NET RegEx向后引用来排除以前匹配的字符吗?

mixins - for什么时候调用迭代器方法?

python - 使用 python 正则表达式进行双字母匹配

regex - 从查询中获取所有按字段分组

ios - 捕获正则表达式 iOS 时应用程序崩溃

regex - Perl 正则表达式与 Raku 正则表达式,引擎的区别?

encoding - Raku:如何读取STDIN原始数据?

javascript - 在 JavaScript 中找到第一个字母时如何拆分字符串?

regex - 乐正则表达式 : How to use capturing group inside lookaheads

raku - 使用环境变量构建配置类的更简洁方法?