in reply to
match sequences of words based on number of characters
Like this?
perl -E '
my $string = "xxxx yy zzzzz xxxx qqq xxxx yy zzzzz xxxx qqq";
my @array = $string =~ /\b(\w{2})\b.+?\b(\w{4})\b.+?\b(\w{3})\b/g;
say "@array";
'
yy xxxx qqq yy xxxx qqq
Edit: here is an approach that lets you auto-customize the regex.
#!/usr/bin/env perl
use strict;
use warnings;
use feature 'say';
my $regex = build_regex( 2, 4, 3 );
say "Regex: $regex";
my $string = "xxxx yy zzzzz xxxx qqq xxxx yy zzzzz xxxx qqq";
my @match = $string =~ /$regex/g;
say "Match: @match";
sub build_regex {
my ( $first, @others ) = @_;
my $regex = qr{\b(\w{$first})\b};
$regex .= qr{.+?\b(\w{$_})\b} for @others;
return $regex;
}
__END__
Regex: (?^:\b(\w{2})\b)(?^:.+?\b(\w{4})\b)(?^:.+?\b(\w{3})\b)
Match: yy xxxx qqq yy xxxx qqq