Perl正则表达式模式长度

时间:2011-11-16 15:15:19

标签: regex perl

我想在一个字符串中搜索一个特定的模式,但具有特定的长度(最大长度为20)。 例如:

的字符串:

hellokkkkkkkkkkhellokhellokkhellokkkkk

正则表达式:

/(hello.*?hello.*?hello)/

但它给了我以下的模式

loc:0到26

hellokkkkkkkkkkhellokhello

但我想要的只是第二种模式(意为hellokhellokkhello),其长度为< 20 .. 有什么建议吗?

1 个答案:

答案 0 :(得分:4)

要获得重叠匹配,请使用look-ahead

my $string = 'hellokkkkkkkkkkhellokhellokkhellokkkkk';
say for
    grep { length($_) < 20 }
    $string =~ /(?=(hello.*?hello.*?hello))/g;