首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何从标题中获取电视节目集和会话号

如何从标题中获取电视节目集和会话号
EN

Stack Overflow用户
提问于 2021-11-11 16:13:20
回答 1查看 161关注 0票数 0

我正试着从标题中得到电视剧的季号和集号

我试着使用下面的代码,但它也将像xxxxe 3这样的标题作为第3集。

代码语言:javascript
复制
$episode = $title | Select-String -Pattern "E(\d+)", "E (\d+)", "Episode (\d+)" | % {$_.Matches.Groups[1].Value}
$season = $title | Select-String -Pattern "S(\d+)", "S (\d+)", "Season (\d+)" | % {$_.Matches.Groups[1].Value} 

如何确保我可以从这些格式中挑选出季号和集。

  • xxx S01E01
  • xxxe 1 S01E01
  • xxx S01 E01
  • xxx 01x01

H 110xxx第01季H 211F 212

如果节目标题中没有上面的赛昂或剧集编号,我只想不返回任何内容,例如,如果节目被命名为"xxxxxE 1“

EN

回答 1

Stack Overflow用户

发布于 2021-11-11 16:32:39

假设以下情况

numbers

  • Seasons将永远是2(或更多)
  1. 四季和剧集,而剧集总是在文件名的末尾。

我建议用regex模式锚定到名称的末尾。从这里开始,我们在句点(文件扩展名)之前占了0或多个字符,在句号和插集之间占了1个文字句号(扩展名),在句号和插集之间占了0或多个字符,在季节和插集之间占了0或多个字符。

代码语言:javascript
复制
$examples = @'
xxx S01E02.avi
xxxe 1 S02E03.mp3
xxx S03 E04.mov
xxx 04x05.png
xxx Season 05 Episode 06.wav
'@ -split [environment]::NewLine

$examples | ForEach-Object {
    if($_ -match '.+(\d{2,}).*(\d{2,}).*\..*$'){
        "Season: {0}  Episode: {1}" -f $matches.1,$matches.2
    }
}

这将输出

代码语言:javascript
复制
Season: 01  Episode: 02
Season: 02  Episode: 03
Season: 03  Episode: 04
Season: 04  Episode: 05
Season: 05  Episode: 06

您没有显示如何填充$title,因此假定它只是一个字符串。但是,如果您想应用于文件对象,则有几个选项。

我们可以不使用regex模式,并使用Name属性。

代码语言:javascript
复制
$videolist = Get-Childitem -Path path\to\movies -Filter *.whatever

foreach($video in $videolist){
    if($video.Name -match '.+(\d{2,}).*(\d{2,}).*\..*$'){
        "Season: {0}  Episode: {1}" -f $matches.1,$matches.2
    }
}

我们可以使用BaseName属性并稍微调整正则表达式。

代码语言:javascript
复制
$videolist = Get-Childitem -Path path\to\movies -Filter *.whatever

foreach($video in $videolist){
    if($video.BaseName -match '.+(\d{2,}).*(\d{2,}).*$'){
        "Season: {0}  Episode: {1}" -f $matches.1,$matches.2
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69931530

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档