Remove-RegEx.ps1

function Remove-RegEx
{
    <#
    .Synopsis
        Removes Regular Expressions
    .Description
        Removes Regular Expressions that have been created.
        This will remove the associated file, any module sharing the Regex's name, and any dynamic aliases.
    .Example
        Remove-RegEx -Name MyRegEx
    .Link
        Get-RegEx
    .Link
        Set-RegEx
    #>

    [CmdletBinding(SupportsShouldProcess,ConfirmImpact='High')]
    [OutputType([Nullable])]
    param(
    # The name of one or more regular expressions
    [Parameter(Mandatory,ValueFromPipelineByPropertyName)]
    [string[]]
    $Name
    )

    

    process {
        foreach ($n in $Name) {
            $FoundRegex = Get-RegEx -Name $n
            if ($FoundRegex -and $FoundRegex.Path) {
                if ($PSCmdlet.ShouldProcess("Remove $($FoundRegex.Path)")) {
                    Remove-Item -LiteralPath $FoundRegex.Path -ErrorAction SilentlyContinue
                }
            }
            $thereIsAModule = Get-Module "?<$n>" # If the regex had a module
            if ($thereIsAModule) { 
                $thereIsAModule | Remove-Module # remove that too.
            }

            $aliasPath      = "Alias:?<$n>"     # If the regex still has an alias
            $thereIsAnAlias = Get-Item -LiteralPath "Alias:?<$n>"
            if ($thereIsAnAlias) {
                Remove-Item -LiteralPath $aliasPath # remove that, too.
            }
        }
    }
}