我正在尝试使用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#程序中使用。
答案 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
你现在可以看到:
看here