in reply to matching characters and numbers with regex
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
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: matching characters and numbers with regex
by james28909 (Deacon) on May 31, 2014 at 22:27 UTC | |
by johngg (Canon) on Jun 01, 2014 at 00:42 UTC | |
by james28909 (Deacon) on May 31, 2014 at 22:55 UTC | |
by james28909 (Deacon) on May 31, 2014 at 23:42 UTC | |
by james28909 (Deacon) on Jun 01, 2014 at 02:25 UTC |