Using a look-ahead combined with pos avoids any need for sums and finds overlapping matches (if that is part of your spec.).
$ perl -Mstrict -Mwarnings -E ' my $str = qq{\0} x 32; substr $str, 5, 2, qq{\x0b\x9e}; substr $str, 26, 5, qq{\x3c\x5a\x1e\x6b\x48}; substr $str, 11, 11, qq{\x0f\x2c\x34\x3c\x5a\x1e\x6b\x48\x0b\x9e\x88}; say unpack q{H*}, $str; for my $quant ( 8, 4, 2 ) { say q{}; say qq{$quant [\\x0a-\\x9f] found at @{ [ pos $str ] }} while $str =~ m{(?x) (?= [\x0a-\x9f] {$quant} ) }g; }' 00000000000b9e000000000f2c343c5a1e6b480b9e88000000003c5a1e6b4800 8 [\x0a-\x9f] found at 11 8 [\x0a-\x9f] found at 12 8 [\x0a-\x9f] found at 13 8 [\x0a-\x9f] found at 14 4 [\x0a-\x9f] found at 11 4 [\x0a-\x9f] found at 12 4 [\x0a-\x9f] found at 13 4 [\x0a-\x9f] found at 14 4 [\x0a-\x9f] found at 15 4 [\x0a-\x9f] found at 16 4 [\x0a-\x9f] found at 17 4 [\x0a-\x9f] found at 18 4 [\x0a-\x9f] found at 26 4 [\x0a-\x9f] found at 27 2 [\x0a-\x9f] found at 5 2 [\x0a-\x9f] found at 11 2 [\x0a-\x9f] found at 12 2 [\x0a-\x9f] found at 13 2 [\x0a-\x9f] found at 14 2 [\x0a-\x9f] found at 15 2 [\x0a-\x9f] found at 16 2 [\x0a-\x9f] found at 17 2 [\x0a-\x9f] found at 18 2 [\x0a-\x9f] found at 19 2 [\x0a-\x9f] found at 20 2 [\x0a-\x9f] found at 26 2 [\x0a-\x9f] found at 27 2 [\x0a-\x9f] found at 28 2 [\x0a-\x9f] found at 29 $
I hope this is helpful.
Cheers,
JohnGG
In reply to Re: matching characters and numbers with regex
by johngg
in thread matching characters and numbers with regex
by james28909
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |