我找到了这个Answer,以了解如何使用RegExp解析电影名称,它的工作原理不错,但并非我真正需要的。
输入字符串为:2001.A.Space.Odyssey.1968.720p.BluRay.DD5.1.x264-LiNG.mkv
答案中使用的正则表达式是这样的:^(.+).(\d{4}).+.(mp4|avi|mkv)$
和output是:
2001.A.Space.Odyssey
1968
mkv
我需要的是如下所示:
2001.A.Space.Odyssey
1968
LiNG
mkv
我的尝试是:
^(.+).(\d{4}).+([^_]).(mp4|avi|mkv)$
但output是:2001.A.Space.Odyssey
1968
G
mkv
我如何获得
LiNG
而不是G
? 最佳答案
此表达式具有四个捕获组:
(.+?)\.([0-9]{4}).+?-(.+)\.(mkv|avi|mp4)
我们所需的输出在哪里。
电影的名称在第一个捕获组中:
(.+?)
其次是
.
和第二组中的所需年份:([0-9]{4})
接下来是所有其他内容,直到最后一个破折号,在这里我们有了最后的字眼:
(.+)
并且所需的扩展名在最后一个捕获组中:
(mkv|avi|mp4)
DEMO
测试
const regex = /(.+?)\.([0-9]{4}).+?-(.+)\.(mkv|avi|mp4)/;
const str = `2001.A.Space.Odyssey.1968.720p.BluRay.DD5.1.x264-LiNG.mkv`;
const subst = `$1\n$2\n$3\n$4`;
// The substituted value will be contained in the result variable
const result = str.replace(regex, subst);
console.log('Substitution result: ', result);