Commands/Search-Subtitle.ps1

function Search-Subtitle
{
    <#
    .SYNOPSIS
        Searches Subtitles
    .DESCRIPTION
        Searches Subtitles for a phrase, pattern, or wildcard.
    .EXAMPLE
        # Set subtitles and search for a phrase
        Get-Subtitle ./Example.srt | Search-Subtitle we
    .EXAMPLE
        # Get subtitles and search for a wildcard
        Get-Subtitle ./Example.srt | Search-Subtitle -Wildcard '*we*'
    .EXAMPLE
        # Get subtitles and search for a regular expression
        Get-Subtitle ./Example.srt | Search-Subtitle -Pattern "I[\s']"
    .EXAMPLE
        # Get subtitles and check for invoke-expression (in case of malicious subtitles)
        Get-Subtitle ./Example.srt | Search-Subtitle -Pattern 'invoke-expression|iex'
    .LINK
        Get-Subtitle
    #>

    [Alias('Search-Subtitles','srsub')]    
    param(
    # The target phrase
    [SupportsWildcards()]
    [string]
    $Phrase,
    
    # The search wildcard
    [SupportsWildcards()]
    [string]
    $Wildcard,

    # A regular expression pattern.
    [PSObject]
    $Pattern,

    # The input object. This should be a series of subtitles.
    [Parameter(ValueFromPipeline)]    
    [PSObject]
    $InputObject
    )

    process {
        if ($Phrase -and $InputObject.Cue -like "*$Phrase*") {
            $InputObject
        }
        elseif ($Wildcard -and $InputObject.Cue -like $Wildcard) {
            $InputObject
        }
        elseif ($Pattern -and $InputObject.Cue -match $Pattern) {
            $InputObject
        }        
    }
}