use strict;
my $str = '22. Non Puoi Sempre Dire Quello Kent Ti Pare.avi
6x13 - Una festa spettacolare.mkv
After earth.avi
Capitan America Il Primo Vendicatore 480p.mkv
Dylan Dog 2010 Ac3.avi
FUMETTOLOGY - 11 - PUNTATA SPECIALE.by.IperB.mkv
Guida galattica per autostoppisti [BDrip 720p ITA-ENG sub ITA-ENG].mkv
Hook - Capitan Uncino (1991).avi
Kick Ass 2.avi
Lemony Snicket - Una serie di sfortunati eventi 2004.avi
Monty Python e il Sacro Graal.avi
Pacific_Rim_2004_BdRip_1080p_ITA_ENG_ANONIMO_CREW.mkv
Pompeii.2014.iTALiAN.DTS.Dual.1080p.BluRay.x264-TRtD_TeaM.mkv
Ralph Spaccatutto.avi
Red Hot Chili Simpson.avi
RobinHood-UnUomoInCalzamaglia.ENG.srt
The.Lego.Movie.2014.iTALiAN.AC3.DUAL.1080p.BluRay.x264-TrTd_TeaM.mkv
The.Pagemaster.1994.1080p.BluRyMux.by.gemini9669.mkv
Tom.&.Jerry.Avventure.Giganti.Giant.Adventure.2013.DVDRip.ITA.AC3.ENG.Mp3-MLN.avi
Tron 480p.mkv
Viaggi Spazio - Temporali.avi
Vite Aliene.avi
[DivX - ITA] The Simpson - Natale con i Simpsons 2003.avi
[SUB ITA] Monty Python e il Sacro Graal.srt
[Sub ENG] Monty Python e il Sacro Graal.srt
codeschool_1322.mp4
corto.avi
film xvid.ENG.srt
[rec].mp4
recita.mp4
regeng.flv';
my $regex = qr/^(?!\d\d?[ex]\d\d?)(?:\[(?:[-\w\s]+)*\] )?(.*?)[-_. ]?(?:[\{\(\[]?(?:dvdrip|[-._\b]ita|[-._\b]eng|xvid| cd\d|dvdscr|\w{1,5}rip|divx|\d+p|\d{4}).*?)?\.([\w]{2,3})$/imp;
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