正则表达式匹配具有不同分辨率后缀的剧集标题
RegEx matching on episode titles with different resolution suffixes
我正在尝试捕获节目名称、剧集编号、剧集标题和分辨率如果存在。我的 collection 中的标准 def 剧集没有分辨率后缀。
对于给定的样本:
Show Name - S01E02 - This Is a High-Def Episode Title - 720p
Show Name - S01E03 - This Is a High-Def Episode Title - 1080p
Show Name - S01E04 - This Is a Standard-Def Episode Title
Show Name - S01E05E06 - This Is a High-Def Double Episode Title - 720p
这是我能得到的最接近的 on regex101.com:
(?<show>[\w ]+) - (?<episode>S[0-9]{2}E[0-9]{2}E?[0-9]{0,2}) - (?<title>[\w -]+)(?: - )(?<res>(?:720p)|(?:1080p))
它以适当的分辨率捕获所有那些,但是当我将 ?
添加到最后一个捕获组时——它确实包括标准 def 剧集——标题组吸收了分辨率。我想我需要在标题组中包含一个负面的前瞻,但我不确定如何做到这一点并同时捕获它。是的,剧集标题中可以包含破折号。
感谢任何指点。如果提供代码片段,我正在用 C# 编写我的重命名脚本,如果它有任何不同的话。谢谢
你可以使用
^(?<show>.*?) - (?<episode>S[0-9]{2}E[0-9]{2}(?:E[0-9]{2})?) - (?<title>.*?)(?: - (?<res>(?:720|1080)p))?$
参见regex demo。 详情:
^
- 字符串的开头
-(?<show>.*?)
- 组“显示”:除换行符外的任何零个或多个字符,尽可能少
-
- 文字 -
文本
(?<episode>S[0-9]{2}E[0-9]{2}(?:E[0-9]{2})?)
- 组“episode”:S
,两个数字,E
,两个数字和一个可选组匹配一个或零个出现的 E
和两个位数
-
- 文字 -
文本
(?<title>.*?)
- 组“标题”:除换行符外的任何零个或多个字符,尽可能少
(?: - (?<res>(?:720|1080)p))?
- 一个可选的序列
-
- 文字 -
文本
(?<res>(?:720|1080)p)
- 组“res”:720
或 1080
后跟 p
$
- 字符串结尾。
我正在尝试捕获节目名称、剧集编号、剧集标题和分辨率如果存在。我的 collection 中的标准 def 剧集没有分辨率后缀。
对于给定的样本:
Show Name - S01E02 - This Is a High-Def Episode Title - 720p
Show Name - S01E03 - This Is a High-Def Episode Title - 1080p
Show Name - S01E04 - This Is a Standard-Def Episode Title
Show Name - S01E05E06 - This Is a High-Def Double Episode Title - 720p
这是我能得到的最接近的 on regex101.com:
(?<show>[\w ]+) - (?<episode>S[0-9]{2}E[0-9]{2}E?[0-9]{0,2}) - (?<title>[\w -]+)(?: - )(?<res>(?:720p)|(?:1080p))
它以适当的分辨率捕获所有那些,但是当我将 ?
添加到最后一个捕获组时——它确实包括标准 def 剧集——标题组吸收了分辨率。我想我需要在标题组中包含一个负面的前瞻,但我不确定如何做到这一点并同时捕获它。是的,剧集标题中可以包含破折号。
感谢任何指点。如果提供代码片段,我正在用 C# 编写我的重命名脚本,如果它有任何不同的话。谢谢
你可以使用
^(?<show>.*?) - (?<episode>S[0-9]{2}E[0-9]{2}(?:E[0-9]{2})?) - (?<title>.*?)(?: - (?<res>(?:720|1080)p))?$
参见regex demo。 详情:
^
- 字符串的开头 -(?<show>.*?)
- 组“显示”:除换行符外的任何零个或多个字符,尽可能少-
- 文字-
文本(?<episode>S[0-9]{2}E[0-9]{2}(?:E[0-9]{2})?)
- 组“episode”:S
,两个数字,E
,两个数字和一个可选组匹配一个或零个出现的E
和两个位数-
- 文字-
文本(?<title>.*?)
- 组“标题”:除换行符外的任何零个或多个字符,尽可能少(?: - (?<res>(?:720|1080)p))?
- 一个可选的序列-
- 文字-
文本(?<res>(?:720|1080)p)
- 组“res”:720
或1080
后跟p
$
- 字符串结尾。