Hjälp med regexp eftersökes!

Permalänk
Medlem

Hjälp med regexp eftersökes!

Jag är tyvärr helt värdelös när det kommer till regexp och undrar om en vänlig själ kan tänka sig att hjälpa mig med en förmodligen ganska simpel grej?

Jag har en lista med filer och från dessa filnamn vill jag plocka ut vissa data.

1901 - L'homme à la tête en caoutchouc.png 1954 - Rear Window - 01.png 1954 - Rear Window - 02.png 1956 - The Man Who Knew Too Much - 1.png 1956 - The Man Who Knew Too Much - 2.png 1956 - The Man Who Knew Too Much - 3.png 2011 - Thor.png 2011 - Åsa-Nisse - Wälkom to Knohult.jpg

Det är alltså lite testdata och jag vill ha ut följande grupper: "årtal - filmtitel.filändelse". Eller om det finns flera bilder för samma film så vill jag ju ha: "årtal - filmtitel - bildnummer.filändelse". Det kan finnas bindestreck i filmtiteln som med fallet Åsa-Nisse - Wälkom to Knohult.

Jag har pillat lite med det, men jag har endast lyckats med att ta ut årtal, filmtitel och filändelse och är således tvungen att göra strängoperationer om det skulle finnas ett bildnummer (vilket det ofta gör). Det förtar väl lite av syftet med regexp liksom. Vad jag har kommit fram till är "(.+?) - (.+)\.(.+)" och man kan se det in action här.

Hilfe, bitte! (Om det spelar någon roll så är det PHP som gäller.)

Permalänk
Medlem

Lite snabbt så slänga jag ihop följande.

$result = preg_split('/^(?P<year>\d{4})\s-\s(?P<title>.*?)(\s-\s(?P<file>.*?\.(png|jpg)))?$/im', $data);

Den har ett problem. Att du får kolla om title har en filextension. Då är det inte en title utan en rad med bara ett årtal och fil och ingen titel.