use strict;
my $str = '1
12
19
20
21
29
30
31
40
50
60
70
80
98
99
100
101
102
149
150
180
190
199
200
201
202
300
400
500
600
999
1000
1001
1002
2000
3000
9999
10000
10001
10002
10003
19999
20000
20001
20002
30000
50000
60000
99999
100000
100001
30000000
';
my $regex = qr/(^[2-9][0-9]{2}$)|(^[1-2][0-9]{3}$)/mp;
if ( $str =~ /$regex/g ) {
print "Whole match is ${^MATCH} and its start/end positions can be obtained via \$-[0] and \$+[0]\n";
# print "Capture Group 1 is $1 and its start/end positions can be obtained via \$-[1] and \$+[1]\n";
# print "Capture Group 2 is $2 ... and so on\n";
}
# ${^POSTMATCH} and ${^PREMATCH} are also available with the use of '/p'
# Named capture groups can be called via $+{name}
Please keep in mind that these code samples are automatically generated and are not guaranteed to work. If you find any syntax errors, feel free to submit a bug report. For a full regex reference for Perl, please visit: http://perldoc.perl.org/perlre.html