Compare commits
No commits in common. 't' and 'master' have entirely different histories.
4 changed files with 72 additions and 173 deletions
@ -1,97 +0,0 @@ |
|||||||
# 檔名分析測試用 |
|
||||||
$Pathes = @( |
|
||||||
"L:\Anime\201110 WORKING’!!\[#CHAT RUMBLE#][WORKING’!!][01-13 END][BIG5][x264_aac][1280x720]\[#CHAT RUMBLE#][WORKING’!!][13][BIG5][x264_aac][1280x720][11C6E807].mp4" |
|
||||||
"L:\Anime\200910 にゃんこい!(貓願三角戀)\[DMG][Nyan Koi!][01-12 END][848x480][BIG5]\[DMG][Nyan Koi!][12 end][848x480][BIG5].rmvb" |
|
||||||
"L:\Anime\200910 聖剣の刀鍛冶(聖劍鍛造師)\[DMG][The Sacred Blacksmith][01-12 END][848x480][BIG5]\[DMG][The Sacred Blacksmith][04V2][848x480][BIG5].rmvb" |
|
||||||
"L:\Anime\201104 星空へ架かる橋(架向星空之橋)\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][Vol.01][1920x1080][TW_BIG5][x264_FLAC]\[AngelSub][Hoshizora e Kakaru Hashi][BDRip][01][1920x1080][BIG5][x264_FLAC].mkv" |
|
||||||
"H:\Anime\201901 盾の勇者の成り上がり\[LKSUB][Tate no Yuusha no Nariagari][01-25][GB][720P][MP4]\[LKSUB][Tate no Yuusha no Nariagari][01][GB][720P].mp4" |
|
||||||
"L:\Anime\202004 ストライク・ザ・ブラッド OVA IV\[Suzu-Kaze][Strike_the_Blood_IV_OVA][01-12FIN][BDRip_1080P][HEVC_YUV420P10]\[Suzu-Kaze] Strike the Blood IV 12FIN [BDRip 1920x1080 HEVC YUV420P10 FLAC].mkv" |
|
||||||
"L:\Anime\200910 アスラクライン II(機巧魔神)\[DMG][Asura Cryin2][01-13 END][848x480][BIG5][RMVB]\[DMG][Asura Cryin 2][01][848x480][Big5].rmvb" |
|
||||||
"H:\Data\Downloads\異世界食堂\[Lilith-Raws] Isekai Shokudou S02 - 06 [Baha][WEB-DL][1080p][AVC AAC][CHT][MP4].mp4" |
|
||||||
) |
|
||||||
$TestName = @($Pathes | % {$_.Split("\\")[-1]}) |
|
||||||
#$Result = @( $TestName | |
|
||||||
#% { @( |
|
||||||
# $($_ -match "\[([^\]]*)\]\[(\d{1,2})\]") |
|
||||||
# $($($_ -replace "\[(DVD|HDTV|BD)rip\]", '') -match "[\[\s](?<Name>\b[^\]\-]*)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]") |
|
||||||
#$($($_ -replace "\[(DVD|HDTV|BD)rip\]", '') -match "[\[\s](?<Name>\b[^\]]*\b)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[vV]\d|FIN|END)?[\]\s]") |
|
||||||
#) | |
|
||||||
#% { if ($_) { $Matches }}}) |
|
||||||
$Result = @( $TestName | |
|
||||||
% { |
|
||||||
Get-NameRegex $_ -Regex "[\[\s](?<Name>\b[^\]\-]*)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]" |
|
||||||
Get-NameRegex $_ -Regex "[\[\s](?<Name>\b[^\]]*)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]" |
|
||||||
Get-NameRegex $_ -Regex "[\[\s](?<Name>\b[^\]]*)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]" |
|
||||||
Get-NameRegex $_ -Regex "[\[\s](?<Name>\b[^\]]*\b)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]" |
|
||||||
} |
|
||||||
) |
|
||||||
|
|
||||||
Write-Output $Result |
|
||||||
Write-Output $Pathes.Length |
|
||||||
Write-Output $Result.Length |
|
||||||
# $Matches |
|
||||||
|
|
||||||
$($($Pathes[1] -replace "\[(DVD|HDTV|BD)rip\]", '') -match "[\[\s](?<Name>\b[^\]]*)(?:[\]\[\-\s]+)(?<Episode>\d{1,2})(?:[ _])?(?:[vV]\d|FIN|END)?[\]\s]") |
|
||||||
|
|
||||||
function Get-NameRegex { |
|
||||||
param( |
|
||||||
$Str, |
|
||||||
$Regex |
|
||||||
) |
|
||||||
if ($($Str -replace "\[(DVD|HDTV|BD)rip\]", '') -match $Regex) { $Matches } |
|
||||||
} |
|
||||||
|
|
||||||
$ss = $TestName | % {$_ -split "[\[\]]"} | ? {$_ -ne ""} |
|
||||||
$ss | ? {$_ -match "\b\d{1,2}(?=\b|[vV]\d|FIN|END)"} |
|
||||||
|
|
||||||
"Geisiduji is ghtr" -match "\b\w+(?=\sis\b)" |
|
||||||
$Matches |
|
||||||
|
|
||||||
$Str = $TestName[0] |
|
||||||
|
|
||||||
function Get-NameRegex2 { |
|
||||||
param( |
|
||||||
$Str, |
|
||||||
$Regex, |
|
||||||
[switch] $Exclude, |
|
||||||
[switch] $End |
|
||||||
) |
|
||||||
# Regex 可輸入複數個 |
|
||||||
Write-Host $Str |
|
||||||
$Regex | % { |
|
||||||
$key = if ($_ -match "\(\?\<(.*?)\>") { |
|
||||||
$Matches[1] |
|
||||||
} else { |
|
||||||
Write-Error "$_ 沒有定義(?<TAG>)" |
|
||||||
} |
|
||||||
if ($Str -match $_ -and($key)) { |
|
||||||
$Result = @{ |
|
||||||
$key = $Matches[$key] |
|
||||||
# 將錨定字串中的特殊字元轉換為一般字串 |
|
||||||
Anchor = $Matches[0] -replace "([\[\]\(\)])", '\$1' |
|
||||||
} |
|
||||||
if (-not($End)) { |
|
||||||
$LR = $Str -split $Result["Anchor"] |
|
||||||
$Result.Add("L", $LR[0]) |
|
||||||
$Result.Add("R", $LR[1]) |
|
||||||
} else { $Result.Remove("Anchor") } |
|
||||||
$Result |
|
||||||
} |
|
||||||
} |
|
||||||
} |
|
||||||
|
|
||||||
$EpisodeRegex = @( |
|
||||||
"S\d{2}[\s\-]+E?(?<Episode>\d{2})" |
|
||||||
"[\[\b\s](?<Episode>\d{2})[\s_]?(?:[vV]\d|END|FIN)[\]\b\s]" |
|
||||||
"\[(?<Episode>\d{1,2})\]" |
|
||||||
#"\d" |
|
||||||
) |
|
||||||
|
|
||||||
$RS1 = $TestName | % { Get-NameRegex2 $_ -Regex $EpisodeRegex } |
|
||||||
$RS1 |
|
||||||
|
|
||||||
$NameRegex = @( |
|
||||||
"[\[\b\s](?<Name>[^\[\]]*)[\]\b\s]$" |
|
||||||
) |
|
||||||
|
|
||||||
$RS1 | % { Get-NameRegex2 $_["L"] -Regex $NameRegex } |
|
Loading…
Reference in new issue