将电影名称和年份与电影文件名称分开

2 php regex preg-replace preg-match

我有一个这样的文件名

鸟人.2014.DVDSCR.X264-PLAYNOW.mkv

Divergent (2014) 720p Blu-Ray x2649 [双音频][英语 DD 5.1 + 印地语 DD 5.1] - Mafiaking - TeamTNT ExClusive.mkv

Cradle 2 The Grave 2003 HDTVRip 720p 双音频[英语+印地语] ~ BRAR

我必须将电影名称和年份分开

为了获得使用年份 perg_match 像

$s="Divergent (2014) 720p Blu-Ray x2649 [Dual-Audio][English DD 5.1 + Hindi DD 5.1] - Mafiaking - TeamTNT ExClusive.mkv";
     if (preg_match('/\b\d{4}\b/', $s, $matches)) {
    $year = $matches[0];
}
echo $year;
Run Code Online (Sandbox Code Playgroud)

结果:- 2014 //工作完美

但我也想得到像这样的电影名称

发散型

鸟人

摇篮 2 坟墓

我也检查这个链接

从字符串中提取电影名称和年份是可选的

但什么也没发生

我怎么得到它?请帮助或提供提示来实现它。

vks*_*vks 5

^.+?(?=\s*[(.]?(\d{4}))
Run Code Online (Sandbox Code Playgroud)

你可以试试这个。电影名称将在第一组中匹配和年份。请参阅演示。

https://regex101.com/r/vA0yQ3/2

$re = "/^.+?(?=\\s*[(.]?(\\d{4}))/mi"; 
$str = "\n\nBirdman.2014.DVDSCR.X264-PLAYNOW.mkv\n\nDivergent (2014) 720p Blu-Ray x2649 [Dual-Audio][English DD 5.1 + Hindi DD 5.1] - Mafiaking - TeamTNT ExClusive.mkv\n\nCradle 2 The Grave 2003 HDTVRip 720p Dual-Audio[Eng+Hindi] ~ BRAR\n"; 

preg_match_all($re, $str, $matches);
Run Code Online (Sandbox Code Playgroud)