Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用正则表达式解析季节和情节信息_C#_Regex - Fatal编程技术网

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}))+