C# 使用正则表达式解析季节和情节信息
我正在尝试使用C# 使用正则表达式解析季节和情节信息,c#,regex,C#,Regex,我正在尝试使用RegEx为季节和剧集信息创建文件名。我需要处理同一文件中有多个季节的特殊情况: 文件名示例: Defiance.S03E01+E02.Custom.DKSubs.720p.HDTV.x264-NGSerier 到目前为止,我已经编写了以下正则表达式: S(?<season>\d{1,2})|E(\d{1,2}){1,} 及 那么,我如何知道插曲列表是用-或+分隔的,还是什么都没有 如果有任何差异,请注意该表达式不能用于c#程序。您可以使用此正则表达式: (?<
RegEx
为季节和剧集信息创建文件名。我需要处理同一文件中有多个季节的特殊情况:
文件名示例:
Defiance.S03E01+E02.Custom.DKSubs.720p.HDTV.x264-NGSerier
到目前为止,我已经编写了以下正则表达式:
S(?<season>\d{1,2})|E(\d{1,2}){1,}
及
那么,我如何知道插曲列表是用-
或+
分隔的,还是什么都没有
如果有任何差异,请注意该表达式不能用于c#程序。您可以使用此正则表达式:
(?<season>S\d{1,2})((?<sep>[-+]?)(?<epi>E\d{1,2}))+
S\d{1,2}([-+]?E\d{1,2})+
代码:
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);
}
}
3结果:
S03E01E02E03
S03E01-E03
S03E01E02E03
+
也可以使用
编辑:在您的评论之后:
使用此正则表达式:
(?<season>S\d{1,2})((?<sep>[-+]?)(?<epi>E\d{1,2}))+
(?S\d{1,2})((?[-+])(?E\d{1,2}))+
您现在可以看到:
看有人正在制作机器人下载器?:-)你没有提到你想如何处理这些特殊情况。用它自己的正则表达式。我希望不会超过99集:-)我不能让它工作,因为每次调用regEx我都会得到两个组:一个返回例如S03E01E02E03,另一个返回E03。也许我问得不够清楚:从最初的表达中,我得到了这一季和一系列剧集。但是我想知道分集器,如果你能把[-+]改成-,+或,把分集器给我,我就起来了running@JensBorrisholt现在看
(?<season>S\d{1,2})((?<sep>[-+]?)(?<epi>E\d{1,2}))+