求教一个正则的写法

245 天前
 FrankAdler

最后一个,匹配到第 3 季,但其实希望走到S03E01,开发语言是 GoLang ,用的 regexp.Compile 和 FindStringSubmatch

正则:

(?i)((?:s|第|season)([0-9]+)(?:季|)(?:.|_|x|-| |))?((?:第|e|ep|p|episode)([0-9]+)(?:集|)).+$

用例:

"[堕落].The.Fall.2013.S02.E03.Complete.BluRay.720p.x264.AC3-CMCT.mkv":           {2, 3},
"Agent.Carter.S02E01.1080p.BluRay.DD5.1.x264-HDS.mkv":                           {2, 1},
"[壹高清]21 点灵.Leave No Soul Behind.Ep01.HDTV.1080p.H264-OneHD.ts":               {1, 1},
"Kimetsu.no.Yaiba.Yuukaku-hen.E01.2021.WEB-DL.1080p.x264.AAC.mkv":               {1, 1},
"宝贝揪揪 第 3 季 第 10 集.mp4":                                                   {3, 10},
"宝贝揪揪 第 9 集.mp4":                                                             {1, 9},
"Gannibal.E01.2022.mp4":                                                        {1, 1},
"Gannibal S02 E11 2022.mp4":                                                    {2, 11},
"Gannibal-S01-E02-2022.mp4":                                                     {1, 2},
"Gannibal.Season01.EP02.2022.mp4":                                                {1, 2},
"转生成自动贩卖机 02 全片简中.mp4":                                                  {1, 2},
"地球脉动.第 3 季.Planet.Earth.S03E01.2023.2160p.WEB-DL.H265.10bit.DDP2.0.2Audio.mp4": {3, 1},
1396 次点击
所在节点    程序员
9 条回复
NoOneNoBody
245 天前
第 m 季 第 n 集,SmEn
这两种写法一般不会同时出现,不如分开写再用“|”连起来,这样思路更简单些
FrankAdler
245 天前
@NoOneNoBody 也是一种做法
ns09005264
245 天前
[img][/img]

这个咋样
```
((第|s|season)\s*(\d+).*?季?)?(第|e|ep)\s*(\d+)
```
group3 就是季,group3 是空的就是第一季
group5 就是集
ns09005264
245 天前
@ns09005264 倒数第二行没法了,只能用额外的判断了。
caomu
245 天前
手中有锤子,看啥都是钉子。
FrankAdler
245 天前
@ns09005264 貌似可以,感谢
txican
244 天前
如果一定要完全用正则实现会增加很大复杂度, 还不利于你后期维护.
如果冒出来一个处理不了的标题, 修改一大串正则会非常困难.
转手给别人接手也困难, 看不懂; 转手给几个月之后的你自己也一样看不懂.
如果你能有代码权限, 建议你多走几步逻辑.

if 匹配 第 m 季 的正则
m 赋值为季数
else
m = 1

if 匹配 第 n 集 的正则
n 赋值为集数


if 不匹配 第 m 季 的正则 AND 不匹配 第 n 集 的正则 AND 文件名中只有一个数字
n = 这个数字

// 也许还有其它特殊情况需要处理, 比如标题中没有数字
FrankAdler
244 天前
@txican 这个正则确实越写越复杂了,考虑拆分了
sampeng
244 天前
问 chatgpt

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1010244

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX