use strict;
my $str = '0:08 Waltz No. 2 (Dmitri Shostakovitch)
4:01 Dance of the Knights (Sergei Prokofiev)
9:42 Sabre Dance (Aram Khachaturian)
12:09 1812 Overture Finale (Pyotr Ilyich Tchaikovsky) (My Absolute Favorite One)
15:57 Flight of the Bumblebee "From The Tale of Tsar Sultan" (Nikolai Rimsky-Korsakov)
19:31 Rite of Spring Sacrifical Dance (Igor Stravinsky)
24:09 Piano Concerto No. 2 (Moderato) (Sergei Rachmaninoff)
34:22 Polovtsian Dances "From Prince Igor" (Alexander Borodin)
39:20 Etude Op. 8 No. 12 (Alexander Scriabin)
41:51 Sailors\' Dance (Reinhold Gliere)
45:13 Dance of the Sugar Plum Fairy (Pyotr Ilylich Tchaikovsky)
47:46 Piano Concerto No. 1 (Allegro) (Pyotr Ilylich Tchaikovsky)
51:54 Ruslan and Lyudmila Overture (Mikhail Glinka)
54:51 Swan Lake Waltz (Pyotr Ilyich Tchaikovsky)
1:01:47 Dance of the Pagan Monster (Sergei Prokofiev)
1:05:01 Overture from the Children of Captain Grant (Isaak Dunaevsky)
1:08:52 Symphony No. 5 (Allegro Non Troppo) (Dmitri Shostakovitch) (My Favorite One)
1:12:00 Swan Theme (Pyotr Ilyich Tchaikovsky)
1:14:53 Night on Bald Mountain (Modest Mussorgsky)';
my $regex = qr/((\d|:)+)\s(.+)/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