pcnick
3 years ago
5 changed files with 154 additions and 59 deletions
Binary file not shown.
@ -0,0 +1,85 @@
|
||||
function Get-NameRegex { |
||||
param( |
||||
$Str, |
||||
$Regex, |
||||
$Exclude, |
||||
[switch] $End |
||||
) |
||||
# 查詢 Regex 字串中定義的 TAG,並將其作為 Scriptblock |
||||
$Keyfind = { |
||||
process{ |
||||
if ($_ -match "\(\?\<(.*?)\>") { |
||||
$Matches[1] |
||||
} else { |
||||
Write-Error "$_ 沒有定義(?<TAG>)" |
||||
} |
||||
} |
||||
} |
||||
|
||||
# 將原函式轉為 Scriptblock,以方便 Exclude 功能遞迴呼叫 |
||||
$InnerScrip = { |
||||
# 取用管線傳入的 hash 進行 match |
||||
process { |
||||
$Key = $_["Regex"] | &$Keyfind |
||||
if ($_["Target"] -match $_["Regex"]) { |
||||
$Result = @{ |
||||
$Key = $Matches[$Key] |
||||
# 將錨定字串中的特殊字元轉換為一般字串 |
||||
Anchor = $Matches[0] -replace "([\[\]\(\)])", '\$1' |
||||
} |
||||
$LR = $_["Target"] -split $Result["Anchor"] |
||||
$Result.Add("L", $LR[0]) |
||||
$Result.Add("R", $LR[1]) |
||||
# 對 Anchor 結果,以 $Exclude 進行比對,符合則加入剩餘字串重新 match |
||||
if ($Exclude -and($Result["Anchor"] -match $Exclude)) { |
||||
$Result.Add("Regex", $_["Regex"]) |
||||
$Result.Add("Target", $Result["L"]) |
||||
return $Result | &$InnerScrip |
||||
} |
||||
# 結尾模式,僅輸出符合 TAGKEY 的 hash |
||||
if ($End) { return @{ $Key = $Result[$Key] } } else { return $Result } |
||||
} |
||||
} |
||||
} |
||||
|
||||
#Write-Host $Str |
||||
# Regex 可輸入複數個 |
||||
$Regex | % { @{ Target = $Str; Regex = $_; } } | &$InnerScrip |
||||
} |
||||
|
||||
# Example |
||||
# $RS1 | % { Get-NameRegex $_["L"] -Regex $NameRegex -Exclude "(BD|DVD|HDTV)RIP" -End } |
||||
# $TestName | % { Get-NameRegex $_ -Regex $Regex } | % { $(Get-NameRegex $_["L"] -Regex $NameRegex -Exclude "(BD|DVD|HDTV)RIP" -End) + $_ } |
||||
# SIG # Begin signature block |
||||
# MIIFxwYJKoZIhvcNAQcCoIIFuDCCBbQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB |
||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR |
||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQU2SfubhaWpugweGH+53eZ/igq |
||||
# VQOgggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B |
||||
# AQUFADAqMRMwEQYDVQQDDApOaWNrIENoYW5nMRMwEQYDVQQKDAplYXJpY2sub3Jn |
||||
# MB4XDTIxMTAzMTEwMDI1MVoXDTIyMTAzMTEwMjI1MVowMzEiMCAGCSqGSIb3DQEJ |
||||
# ARYTcGNuaWNrMTAwQGdtYWlsLmNvbTENMAsGA1UEAwwETmljazCCASIwDQYJKoZI |
||||
# hvcNAQEBBQADggEPADCCAQoCggEBAMEnEk3/5rkEMibDbbfOXQaerk5xXSJmY8gf |
||||
# FAVUbrGfjzYHcRsPRzdb/pstcZGS2XUCoX2a57lQhACStns9dXeYfWhzNeAiSEAy |
||||
# iaJzUj5ELcH5TzT+mjeJQX6upeHOexO1TmtuM6mugpl9SvNQFqbQXlPHHmoLE3OC |
||||
# UzzjEC0AkHkcSiLdqtmSbRmaomcDMbtJgZHUciWE/p6mmAbpv2R4rdKSYSiI8UsE |
||||
# UclzkeTNrYKmJNiM0R+X1LyZVY6HAHN8dR3tjBnEPYoPxRAz4d2FEajvumzosNUr |
||||
# ni9LROnRxQXa048ZcsNArNZDQXe+Rc+PWhzbqHhy8rBllgZ08XkCAwEAAaNnMGUw |
||||
# DgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB8GA1UdIwQYMBaA |
||||
# FBXyUrhn78ppKe7GRmHS6vbsNae/MB0GA1UdDgQWBBRs5+Yfb/14jwpjUNpTUuR1 |
||||
# 759t9TANBgkqhkiG9w0BAQUFAAOCAQEACSL1BqUcrqh+bBqr5rQ5mArCVxsBW92r |
||||
# HenPY48dKdhGgMODtxuo7osZLk7Il+aXhAsvNTSfmc92H5eDXFqZ565jm8r6FF1C |
||||
# f1oKxznmtxd4oyXflCRqBz+OGuXLq8dG9gWT7OisKWe0hifSMGaZ9afpNeiFLuD1 |
||||
# GSGk5E0W+bUyezCmjOdNWYIW452brt8rJS21WWVVvrsGjgJoTdsoAkFek8OEm82+ |
||||
# 1UR7xZOHybLvi8N0gvD+UFlVvcv6pmgUqaz5DS7J2si75Xj9pThE6/bPu/fkpc53 |
||||
# gMbleXNaqXIKeJTbI5hi2crlKyXBe/GfuK0Tv+06S1sL32VAs1VwmjGCAd8wggHb |
||||
# AgEBMD4wKjETMBEGA1UEAwwKTmljayBDaGFuZzETMBEGA1UECgwKZWFyaWNrLm9y |
||||
# ZwIQdMnAQ4BDAo9Lgfn+QeDdhjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEK |
||||
# MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3 |
||||
# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUoqQp8TNHQrFdDrpM |
||||
# 6+iDq3QvqIUwDQYJKoZIhvcNAQEBBQAEggEApo8NtKRWXRdAxdmJMSYorrOWC1ra |
||||
# NaN0N3UbhQKTAjbN3sYP4oZmOiEftQn5Ot0JztpYAb29Ge//R+0EGQR69IoGMgr0 |
||||
# X5toFyWFle3ddKu3swsFv9dJI4vYSW1Pce13kBdp+2a7hCF/6kS1aYDLEdEYhcwq |
||||
# 8rqRSNtr73Ro00eMVSm72GRv709ouWK5jCqCPq6r/7O4UZvyiqyF4Oq8fZDAsWlK |
||||
# Tc5zLTtnaIysgvAZm7izn0oSD/kLx6hv7wGNp7yVSUkNq7a7qu34Brs5eQtZyblj |
||||
# JbZPtDYY0++t5xgHskpigkAVej3B1TkNg1rH1EJ49JX10yeIq7JEMS4u8Q== |
||||
# SIG # End signature block |
Binary file not shown.
@ -0,0 +1,41 @@
|
||||
function Edit-PathChar { |
||||
param( |
||||
$Str, |
||||
$Char = "[\[\]]" |
||||
) |
||||
$Str -replace "(${Char})", '`$1' |
||||
} |
||||
|
||||
# SIG # Begin signature block |
||||
# MIIFxwYJKoZIhvcNAQcCoIIFuDCCBbQCAQExCzAJBgUrDgMCGgUAMGkGCisGAQQB |
||||
# gjcCAQSgWzBZMDQGCisGAQQBgjcCAR4wJgIDAQAABBAfzDtgWUsITrck0sYpfvNR |
||||
# AgEAAgEAAgEAAgEAAgEAMCEwCQYFKw4DAhoFAAQUNYO6iFH1B+kW/b06vFyGuFhF |
||||
# TYSgggNSMIIDTjCCAjagAwIBAgIQdMnAQ4BDAo9Lgfn+QeDdhjANBgkqhkiG9w0B |
||||
# AQUFADAqMRMwEQYDVQQDDApOaWNrIENoYW5nMRMwEQYDVQQKDAplYXJpY2sub3Jn |
||||
# MB4XDTIxMTAzMTEwMDI1MVoXDTIyMTAzMTEwMjI1MVowMzEiMCAGCSqGSIb3DQEJ |
||||
# ARYTcGNuaWNrMTAwQGdtYWlsLmNvbTENMAsGA1UEAwwETmljazCCASIwDQYJKoZI |
||||
# hvcNAQEBBQADggEPADCCAQoCggEBAMEnEk3/5rkEMibDbbfOXQaerk5xXSJmY8gf |
||||
# FAVUbrGfjzYHcRsPRzdb/pstcZGS2XUCoX2a57lQhACStns9dXeYfWhzNeAiSEAy |
||||
# iaJzUj5ELcH5TzT+mjeJQX6upeHOexO1TmtuM6mugpl9SvNQFqbQXlPHHmoLE3OC |
||||
# UzzjEC0AkHkcSiLdqtmSbRmaomcDMbtJgZHUciWE/p6mmAbpv2R4rdKSYSiI8UsE |
||||
# UclzkeTNrYKmJNiM0R+X1LyZVY6HAHN8dR3tjBnEPYoPxRAz4d2FEajvumzosNUr |
||||
# ni9LROnRxQXa048ZcsNArNZDQXe+Rc+PWhzbqHhy8rBllgZ08XkCAwEAAaNnMGUw |
||||
# DgYDVR0PAQH/BAQDAgeAMBMGA1UdJQQMMAoGCCsGAQUFBwMDMB8GA1UdIwQYMBaA |
||||
# FBXyUrhn78ppKe7GRmHS6vbsNae/MB0GA1UdDgQWBBRs5+Yfb/14jwpjUNpTUuR1 |
||||
# 759t9TANBgkqhkiG9w0BAQUFAAOCAQEACSL1BqUcrqh+bBqr5rQ5mArCVxsBW92r |
||||
# HenPY48dKdhGgMODtxuo7osZLk7Il+aXhAsvNTSfmc92H5eDXFqZ565jm8r6FF1C |
||||
# f1oKxznmtxd4oyXflCRqBz+OGuXLq8dG9gWT7OisKWe0hifSMGaZ9afpNeiFLuD1 |
||||
# GSGk5E0W+bUyezCmjOdNWYIW452brt8rJS21WWVVvrsGjgJoTdsoAkFek8OEm82+ |
||||
# 1UR7xZOHybLvi8N0gvD+UFlVvcv6pmgUqaz5DS7J2si75Xj9pThE6/bPu/fkpc53 |
||||
# gMbleXNaqXIKeJTbI5hi2crlKyXBe/GfuK0Tv+06S1sL32VAs1VwmjGCAd8wggHb |
||||
# AgEBMD4wKjETMBEGA1UEAwwKTmljayBDaGFuZzETMBEGA1UECgwKZWFyaWNrLm9y |
||||
# ZwIQdMnAQ4BDAo9Lgfn+QeDdhjAJBgUrDgMCGgUAoHgwGAYKKwYBBAGCNwIBDDEK |
||||
# MAigAoAAoQKAADAZBgkqhkiG9w0BCQMxDAYKKwYBBAGCNwIBBDAcBgorBgEEAYI3 |
||||
# AgELMQ4wDAYKKwYBBAGCNwIBFTAjBgkqhkiG9w0BCQQxFgQUKm04xcPD1eiw5sak |
||||
# B7XvBOA0ywIwDQYJKoZIhvcNAQEBBQAEggEAMYVlNEthdr1G6iogbkFpgKpPV+Wh |
||||
# z6M5HObyzETBVKkq34Lue9RqAK01ON4wFyaGsVHnSvSRA+JmZmWBmVeEEKi0LL00 |
||||
# /jrm+3BExMrslnOJP6I7t/sG+jfONZ9QoM1ms/E3nlWrTrkrvQ0gLJXMwaF7msal |
||||
# PZ1gICVGg14SFtGslsy6b8YZ9a0VUnN9JBODbT/DTqpyBVm3552e9oJ2hu0kPz5A |
||||
# lbkvREPC0HRVxLXWpWfP8NaR1EClbZB6pjTmwiVtKOtb0QSfpK0bjzCqsR42qKDc |
||||
# 4FWVXf+Jl7eGQ7uKzfnlzRVzds5ymAgHGUMWon/naWMCKm6p/RTxFAVAYA== |
||||
# SIG # End signature block |
Loading…
Reference in new issue