使用RegEx解析季节和剧集信息

时间:2015-06-17 16:37:17

标签: c# regex

我正在尝试使用RegEx为季节和剧集信息设置文件名。我想知道在同一档案中有多个季节的特殊情况:

示例文件名:

Defiance.S03E01+E02.Custom.DKSubs.720p.HDTV.x264-NGSerier

Sofar我写过这个正则表达式:

S(?<season>\d{1,2})|E(\d{1,2}){1,}

它给了我季节和剧集列表。但问题是这个模式也会匹配

Defiance.S03E01-E03.Custom.DKSubs.720p.HDTV.x264-NGSerier

Defiance.S03E01E02E03.Custom.DKSubs.720p.HDTV.x264-NGSerier

那么我怎么知道剧集列表是用-还是+分开还是什么都没有?

如果它有任何差异,请注意表达式不能在c#程序中使用。

1 个答案:

答案 0 :(得分:1)

您可以使用此正则表达式:

void Main() { Regex regex = new Regex(@"S\d{1,2}([-+]?E\d{1,2})+"); Match match = regex.Match("Defiance.S03E01E02E03.Custom.DKSubs.720p.HDTV.x264-NGSerier"); if (match.Success) { Console.WriteLine(match.Value); } match = regex.Match("Defiance.S03E01-E03.Custom.DKSubs.720p.HDTV.x264-NGSerier"); if (match.Success) { Console.WriteLine(match.Value); } match = regex.Match("Defiance.S03E01E02E03.Custom.DKSubs.720p.HDTV.x264-NGSerier"); if (match.Success) { Console.WriteLine(match.Value); } }

代码:

S03E01E02E03
S03E01-E03
S03E01E02E03

3结果:

+

(?<season>S\d{1,2})((?<sep>[-+]?)(?<epi>E\d{1,2}))+ 也可以使用

编辑:发表评论后:

使用此正则表达式:

group

你现在可以看到:

enter image description here

here