我找到了这个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);


regex - 正则表达式用于分割字符串-LMLPHP

10-08 17:46