in reply to position of first matching regex
The special variable @- is an array that contains the offsets from the start of the string to each match. Consider:
use strict; use warnings; for my $str ('1 2 3', 'a b c', ' a3 b2 c1') { next if $str !~ /\w?([0-9])/; my $mpos = $-[0]; my $cpos = $-[1]; print "Found $1 in '$str' at index $cpos. Overall match started at + $mpos\n"; }
$-[0] accesses the first element of the array - the start of the entire match. $-[1] gives the index of the start of the first capture. The script prints:
Found 1 in '1 2 3' at index 0. Overall match started at 0 Found 3 in ' a3 b2 c1' at index 2. Overall match started at 1
See the perlvar regular expression variables section. You should take a look at perlretut and perlre too.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: position of first matching regex
by techtaskers.com (Novice) on May 17, 2014 at 14:48 UTC | |
by GrandFather (Saint) on May 18, 2014 at 10:34 UTC |