Private/Convert-ConfluenceMarkdownInline.ps1

function Convert-ConfluenceMarkdownInline {
    <#
    .SYNOPSIS
        Wandelt Inline-Markdown (fett, kursiv, Code, Links) eines einzelnen Textfragments in Storage-Format-Spans um.
    #>

    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true)]
        [AllowEmptyString()]
        [string]
        $Text
    )

    process {
        $Escaped = [System.Net.WebUtility]::HtmlEncode($Text)

        # Links [Text](URL)
        $Escaped = [regex]::Replace($Escaped, '\[([^\]]+)\]\(([^)]+)\)', '<a href="$2">$1</a>')

        # Fett **Text** oder __Text__
        $Escaped = [regex]::Replace($Escaped, '\*\*([^\*]+)\*\*', '<strong>$1</strong>')
        $Escaped = [regex]::Replace($Escaped, '__([^_]+)__', '<strong>$1</strong>')

        # Kursiv *Text* oder _Text_
        $Escaped = [regex]::Replace($Escaped, '(?<!\*)\*([^\*]+)\*(?!\*)', '<em>$1</em>')
        $Escaped = [regex]::Replace($Escaped, '(?<!_)_([^_]+)_(?!_)', '<em>$1</em>')

        # Inline-Code `Text`
        $Escaped = [regex]::Replace($Escaped, '`([^`]+)`', '<code>$1</code>')
    }

    end {
        return $Escaped
    }
}