use strict;
my $str = '123456.123abc
00 24 13.13456789 Scopes of Bids (Multiple Contracts)
00 24 13.16 Scopes of Bids (Multiple-Prime Contract)
00 00 00 Procurement and Contracting Requirements
00 01 01 Project Title Page
00 01 05 Certifications Page
00 01 07 Seals Page
00 01 10 Table of Contents
00 01 15 List of Drawing Sheets
00 01 20 List of Schedules
00 10 00 Solicitation
00 11 00 Advertisements and Invitations
00 11 13 Advertisement for Bids
00 11 16 Invitation to Bid
00 11 19 Request for Proposal
00 11 53 Request for Qualifications
00 20 00 Instructions for Procurement
00 21 00 Instructions
00 21 13 Instructions to Bidders
00 21 16 Instructions to Proposers
00 22 00 Supplementary Instructions
00 22 13 Supplementary Instructions to Bidders
00 22 16 Supplementary Instructions to Proposers
00 23 00 Procurement Definitions
00 24 00 Procurement Scopes
00 24 13 Scopes of Bids ';
my $regex = qr/^[^\d]?(?:(\d\d)[^\d]?(\d\d)[^\d]?(\d\d)(\.[\d\w]{1,}){0,1})(.*)$/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