regex – perl6中的可变量词

前端之家收集整理的这篇文章主要介绍了regex – perl6中的可变量词前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
假设我想匹配至少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>..*)/)

在编译时导致错误
量词没有量化

有标量作为量词的方法吗?

解决方法

当**量词的右侧不是数字或范围文字,而是任意Perl 6表达式时,您必须将其括在大括号中:
my $text = "The quick brown fox jumps over the lazy dog.";
my $min-length = 4;

my @words = $text.comb(/ \w ** {$min-length .. *} /);

.say for @words;

输出

quick
brown
jumps
over
lazy

猜你在找的Perl相关文章