後,我有這樣的提取字符之前和中間的符正則表達式和休息串
1x5 Girl In The Flower Dress.mkv
文件名,這意味着Season 1 Episode 5
In The Flower Dress
的
2x6.English,.Fitz.or.Percy.avi
這意味着English, Fitz or Percy
如何Season 2 Episode 6
提取季節編號,劇集編號和系列名稱
後,我有這樣的提取字符之前和中間的符正則表達式和休息串
1x5 Girl In The Flower Dress.mkv
文件名,這意味着Season 1 Episode 5
In The Flower Dress
的
2x6.English,.Fitz.or.Percy.avi
這意味着English, Fitz or Percy
如何Season 2 Episode 6
提取季節編號,劇集編號和系列名稱
使用捕獲組來獲取匹配模式部分的字符串部分。
preg_match('/(\d+)x(\d+)\s*(.*)/', '1x5 Girl In The Flower Dress.mkv', $match);
$match[1]
將'1'
,$match[2]
將'5'
,並$match[3]
將'Girl in the Flower Dress.mov'
。
您需要使用\d+
來匹配季節或劇集編號中的多個數字。
Thanku爲此。我可以使用'str_replace($ match ['0'],「」,$ srt);'獲取系列名稱 –
您可以添加另一個捕獲組以獲取所有內容。 – Barmar
好吧,明白了。再次感謝。 –
輸入
2x6.English,.Fitz.or.Percy.avi
試試這個:
preg_match("/(\d*)x(\d*).?(.*)\.(.*)/", $input, $output_array);
output_array
array(
0 => 2x6.English,.Fitz.or.Percy.avi
1 => 2 // Season
2 => 6 // Episode
3 => English,.Fitz.or.Percy // title
4 => avi
)
Thanku您的回答! –
永遠歡迎:) @再試一次 –
如何更直接的解決方案嗎?
$title = '2x6.English,.Fitz.or.Percy.avi';
preg_match_all('~(?:(\d+)x(\d+)|(?!^)\G)[^\w\r\n,-]*\K[\w,-]++(?!$)~m', $title, $matches);
$matches = array_map('array_filter', $matches);
echo "Season {$matches[1][0]} Episode {$matches[2][0]} of ".implode(' ', $matches[0]);
輸出:
Season 2 Episode 6 of English, Fitz or Percy
Thanku您的回答! –
偉大的方法! –
起初,我想寫:$out=preg_split('/[\. x]/',$in,3,PREG_SPLIT_NO_EMPTY);
,但因爲標題的話可以點分隔的,你不想要捕捉的文件後綴,我不得不斌該方法。
Barmar的方法包含文件後綴,因此需要額外處理。拉維的模式並不盡如人意。
Revo的方法受到啓發,但需要的步數是我模式的4倍。 Regex Demo我們的兩個方法都需要額外的函數調用來準備標題。我發現我的方法非常直接,不需要任何數組過濾。
$input[]='1x5 Girl In The Flower Dress.mkv';
$input[]='2x6.English,.Fitz.or.Percy.avi';
foreach($input as $in){
preg_match('/(\d+)x(\d+)[ \.](.+)\..+/',$in,$out);
echo "<div>";
echo "Season $out[1] Episode $out[2] of ",str_replace('.',' ',$out[3]);
echo "</div>";
}
輸出:
Season 1 Episode 5 of Girl In The Flower Dress
Season 2 Episode 6 of English, Fitz or Percy
Thanku您的回答! –
這是一個非常簡單的正則表達式。什麼部分給你帶來麻煩? – Barmar
使用'\ d'來匹配數字,'x'匹配中間的符號,並使用捕獲組來獲得匹配的部分。 – Barmar
我會嘗試你的建議,並讓你知道@Barmar –