C# regex alternate选择错误匹配

C# regex alternate选择错误匹配,c#,regex,C#,Regex,我有这样的名字: \\SRV\Share\TVS\My Super Tv Show\Season 11\S11E12 - some title.jpg \\SRV\Share\TVS\My Super Tv Show\Season 11\12-sometitle.png \\SRV\Share\TVS\My Super Tv Show\S11E12 -some title.fdf \\SRV\Share\TVS\My Super Tv Show\Season 11-E12 - Some titl

我有这样的名字:

\\SRV\Share\TVS\My Super Tv Show\Season 11\S11E12 - some title.jpg
\\SRV\Share\TVS\My Super Tv Show\Season 11\12-sometitle.png
\\SRV\Share\TVS\My Super Tv Show\S11E12 -some title.fdf
\\SRV\Share\TVS\My Super Tv Show\Season 11-E12 - Some title.fdgfg
\\SRV\Share\TVS\My Super Tv Show\Season 11 Ep12 - Some Title.jpeg
\\SRV\Share\TVS\My Super Tv Show\11x12 - Some Title.jpeg
我需要找回我的超级电视节目,季号和集号

我尝试了很多正则表达式,最后一个是:

.+\\.+\\(?<TvShow>.+?)[. -\\]+?((Season (?<Season>\d+)\\[sS]\d+[eE])|([sS](eason )?(?<Season>\d+)[. -]*[eE]?p?[. -\\]*)|((?<Season>\d+)[xX]))(?<Episode>\d+)
它不会从名字中恢复电视节目名称,除姓氏外,第几集只得到2而不是12

任何帮助都将不胜感激:

您可以使用

^\\\\(?:[^\\]+\\){3}(?<TvShow>[^\\]+)\\(?:Season\s*(?<Season>\d+)\\(?:(?<Episode>\d+)|S\d+E(?<Episode>\d+))|Season\s*(?<Season>\d+)[\s-]*Ep?(?<Episode>\d+)|S(?<Season>\d+)E(?<Episode>\d+)|(?<Season>\d+)x(?<Episode>\d+))

详情:

^-字符串的开头 \\\\-a\\string ?:[^\]+\{3}-三次出现一个或多个除\以外的字符,然后出现一个\ ?[^\\]+-组电视节目:一个或多个字符,而不是\ \\-a\char ?:-启动非捕获组: 季节\s*?\d+\\?:?\d+\s\d+E?\d+-季节,0+空格,一个或多个数字季节组,\,然后是一个或多个数字情节组或s,一个或多个数字,E,一个或多个数字情节组 |-或 季节\s*?\d+[\s-]*Ep???\d+-季节,零个或多个空格,一个或多个数字季节组,零个或多个空格/连字符,E,可选的p,一个或多个数字季节组 |-或 S?\d+E?\d+-S,一个或多个数字季组,E,一个或多个数字集组 |-或 ?\d+x?\d+-一个或多个数字季节组,x,一个或多个数字情节组 -小组结束。
您还可以使用3个命名的捕获组,而无需进行替换

\\(?<TvShow>[^\\]+)\\(?:S(?:eason)?\s*)?(?<Season>\d+)[\\Ex -](?:S\d+E|Ep?)?(?<Episode>\d+)
模式匹配

\\匹配\ ?[^\\]+捕获除\ \\?:S?:eason?\S*?可选择匹配季节变化 ?\d+捕获1+个数字 [\\Ex-]匹配列出的字符中的1个 ?:S\d+E | Ep??可选地将SE和1+数字或E与可选的p匹配 ?\d+捕获1+个数字
请看

@MonkeyZeus。。。节目名称,但不包括季/集。我建议用不同的正则表达式来处理这些问题。@Fildor是的,我没有阅读整个问题,注释被删除了…@MonkeyZeus哦,我不是说它不好。它与节目名称非常匹配!谢谢你的回答和解释,对于我提供的列表,它很有效。我支持它,但我认为“第四只鸟的anwer”很好,因为它更简洁,适用于本地用户paths@CFou如果删除^\\\?:[^\\]+\\{3},它将以类似的方式工作。我之所以保留它,是因为您的模式中有\\.+。谢谢您的回答:我对它进行了一些调整\\?[^\.-]+[\\-]*?:[sS]?:eason?\s*?\d+[\\eExX-.]]:[sS]\d+[eE][eE]p[.-]?\d+,这样它就可以与更多的名称一起使用,例如d:\Users\Test\Pictures\My Super Tv Show-12x12-SomeTitle.bg